タグ付けされた質問 「sql-server」

Microsoft SQL Serverのすべてのバージョン(MySQL以外)。sql-server-2016のようなバージョン固有のタグも追加してください。これは、質問に関連することが多いためです。

6
同じIDであるがnullの行を選択し、そのIDの別の列で他の値を選択する
特定のユーザー名列NULL以外の値とその他の値を持つ行のみを取得したいNULL。 その特定のユーザー名に対して両方の行にnullがあるか、両方にnull以外の値がある場合、出力に表示されません。nullと他の値を持つ同じユーザー名の行が3つ以上ある場合は、それらが表示されます。 以下はサンプルのサンプルと出力です。SQLクエリを使用してどのように実行できますか? +----------+-------+ | username | col2 | +----------+-------+ | a | abc | | a | ef | | b | null | | b | null | | c | der | | c | null | +----------+-------+ 出力 +----------+------+ | username | col2 | +----------+------+ | …

1
sysadmin以外、SQL Serverエージェントジョブの非所有者に実行を許可する
SSISパッケージを実行するジョブがあります。 現在、所有者はプロキシアカウントです。sys-adminアカウントからジョブを手動で実行できます。 当社のWebサービスは、制限付きアカウントを使用してログインします。ジョブを実行する必要があります。現在、ジョブをまったく表示できません(名前で実行しようとすると、存在しないと表示されます)。 オーナー限定のアカウントに変更してみました。これでジョブを表示できましたが、SSISパッケージを実行できなくなったため、ジョブは実行に失敗しました。 制限付きアカウントが別のアカウントが所有するジョブを実行できるようにする方法が必要ですか?

2
プランガイドが使用されないのはなぜですか?
転換点の問題に最近遭遇し、クエリオプティマイザが検索列の非クラスタ化インデックスを単に無視するため、数秒以内に実行を完了するために使用されていた一部のレポートクエリが2分以上かかっています。以下のクエリの例: select top 100 * from [dbo].[t_Call] where ID > 0 and throwtime between '3/20/2014 7:00:00 AM' and '3/24/2014 6:59:59 AM' order by id ID列は、インデックスクラスタ化されたThrowtime非クラスタ化インデックスを持っています。この場合、クエリプランと非クラスター化インデックスthrowtimeをID変更するのではなく、順序付けを使用していることに気付きました。また、古いデータの一部をアーカイブすることも計画しています(現在、20 mln行あります!!)。しかし、アプリケーションでこれらの変更を行うにはしばらく時間がかかります。アプリケーションレベルで変更を加えずに、レポートを適度に高速に実行する方法を見つける必要があります(まあ、それは人生です)。 プランガイドを入力してください。非クラスター化インデックスのクエリヒントを使用して以下のプランガイドを作成しましたが、何らかの理由で、非クラスター化インデックスがまだ使用されていません。何か不足していますか? EXEC sp_create_plan_guide @name = N'[prod2reports_callthrowtime]', @stmt = N'select top 100 * from [dbo] . [t_Call] where ID > @0 and @1 < = …


2
WHERE句が異なる2つのSELECTクエリをマージする
サービステーブルが1つあります。2つのSELECTクエリをマージする必要があります。どちらにも異なるwhere句があります。例えば SELECT U_REGN as 'Region', COUNT(callID) as 'OpenServices', SUM(CASE WHEN descrption LIKE '%DFC%' THEN 1 ELSE 0 END) 'DFC' FROM OSCL WHERE ([status] = - 3) GROUP BY U_REGN ORDER BY 'OpenServices' desc これは私に結果を与えます Region | OpenServices | DFC Karaci | 14 | 4 Lahore | 13 | 3 Islamabad …

1
sqlprojの参照アセンブリがサーバーにデプロイされていません
fastJSONの変更バージョンを参照として使用するVisual Studio 2013データベースプロジェクトがあります。次のスクリーンショットに示すように、参照プロパティで[DDLの生成]を選択しました。 そして.sqlproj msbuildファイルで: <Reference Include="fastJSON"> <HintPath>..\..\fastjson\output\net40\fastJSON.dll</HintPath> <GenerateSqlClrDdl>True</GenerateSqlClrDdl> </Reference> ただし、bin / debug / Project.sqlにはの行が含まれていませんCREATE ASSEMBLY fastJSON . . .。アセンブリを手動で追加すると、プロジェクトがデプロイされて実行されます。Visual Studioでアセンブリを展開するにはどうすればよいですか?

1
バックアップ情報(成功および失敗)SQL Serverを表示するクエリ
2つの異なるデータベースをバックアップする2つのジョブがあります。 ジョブ1がDB1 をバックアップする ジョブ2がDB2 をバックアップするドライブ1の空き容量が少なくなり、ジョブ1が失敗するため、DB1はバックアップに失敗します。この問題を修正するには、スペースを追加する必要がありました。大したことはありません。この問題が1か月にわたって発生しているときに、今日、このことについて知らされました。うん、それはクレイジーだと知っているが、それは開発者だ DB1の完全なバックアップ履歴を取得したい。msdb.dbo.backupsetテーブルから正常なバックアップ情報を取得できることはわかっていますが、データベースの失敗したバックアップを表示するクエリがあるかどうかを知りたいです。 以下のクエリは、12/31 / 13-1 / 27/14の特定のデータベースのバックアップ履歴を表示します。情報には、サーバー、データベース名、バックアップの開始時間と終了時間、dbsのバックアップにかかった合計時間、dbサイズ、バックアップセット名が含まれます。 SELECT distinct CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, msdb.dbo.backupset.database_name, msdb.dbo.backupset.backup_start_date, msdb.dbo.backupset.backup_finish_date, CAST((DATEDIFF(second, msdb.dbo.backupset.backup_start_date,msdb.dbo.backupset.backup_finish_date)) AS varchar)+ ' secs ' AS [Total Time] , Cast(msdb.dbo.backupset.backup_size/1024/1024 AS numeric(10,2)) AS 'Backup Size(MB)', msdb.dbo.backupset.name AS backupset_name FROM msdb.dbo.backupmediafamily INNER JOIN msdb.dbo.backupset ON msdb.dbo.backupmediafamily.media_set_id = msdb.dbo.backupset.media_set_id --Enter …

2
DBの再起動後にエラー15404をクリアする方法(再起動以外)
SQL Serverエージェントの1時間ごとのジョブが頻繁に(たとえば、数か月ごと)エラー15404の報告を開始し、介入されるまで報告を続けます。 [298] SQLServerエラー:15404、Windows NTグループ/ユーザー 'DOMAIN_NAME \ SomeDomainAccount'に関する情報を取得できませんでした、エラーコード0x6e。[SQLSTATE 42000](ConnIsLoginSysAdmin) SQL ServerエンジンおよびSQL Serverエージェントサービスを手動で再起動した直後に、最初の障害が発生することがあります。マシンを再起動すると、問題を解決できます。 ジョブの所有者は、エラーメッセージに表示される名前で、SQL Server管理者です。 SQL Serverエンジンサービスアカウントは、サービスアカウントのように見えます(私はそれがデフォルトのインストールアカウントであると思います(エンジン/エージェントインスタンス間の干渉を防ぐために、一般的なNetworkServiceよりも1ノッチ優れています)。 NT Service\MSSQL$INSTNAME ジョブが常に失敗する場合は1つのことですが、再起動後にジョブが成功するため、などのサービスアカウントが機能しているはずであり、A / Dタイミングの問題やバグがあると思います。A / D構成についてITに質問すると、通常は「何も変更されていません」という応答になります。 エンジンおよびエージェントサービスを再起動すると、ジョブが失敗し始める可能性があります。 マシンを再起動すると問題が解決します。 エンジンとエージェントをすぐに再起動しても、ジョブが失敗することはなくなりました。 リンク: SQL Server 8198エラーのトラブルシューティング方法


3
別のテーブルのデータでテーブルを上書きする-SQL
ユーザーは本番環境からQAデータベースを更新したいが、2つのテーブル(T1とT2と呼ぶ)が元のQAデータを保持することを望んでいます。そのため、2つのテーブルをQA(DB1)から一時QAデータベース(DB2)にコピーしました。次に、DB1を本番環境から更新しました。更新後、T1およびT2データをDB2からDB1に上書きして、更新前のQA値を含めることができるようにします。 私は次のことを行いました: 使用する select * INTO D1.dbo.T1 FROM D2.dbo.T1 次に、製品からD1を更新しました 次に、次の手順でT1を切り捨てます。 SELECT COUNT(*) AS BeforeTruncateCount FROM T1; GO TRUNCATE TABLE T1; GO SELECT COUNT(*) AS AfterTruncateCount FROM T1; GO D2.T1からD1.T1にデータをコピーするために戻ると、データベースにT1という名前のオブジェクトが既に存在するというエラーが表示されます。 テーブルをドロップしてコピーする必要がありますか? または、手順全体に適した方法はありますか?

4
データベースがオンラインのときにデータベースのファイルをコピーできますか?
SQL Server 2008 R2 SP1で運用データベースの開発用コピーをセットアップする作業をしています。ライブデータベースは、現在2人の開発者が読み取り専用クエリで軽く使用していますが、新しいデータベースでも更新が行われます。 データベースは2.1TBで、テストに必要な最新のビルドに復元して更新するのに合計3日かかったので、私の元々の計画は、新しいバックアップファイルセットを作成し、それらのファイルから復元することでした。これにより、現在のデータベースをオフラインにすることなく、同じSQLインスタンスとマシン上にデータベースの開発コピーを作成できます。 ただし、この2、3日を節約するために、物理データベースファイルをコピーして、データベースの新しいコピーを添付することをお勧めします。残念ながら、コピーしようとすると、SQL Serverがそれらのファイルにかけるロックを参照するエラーが発生します。 データベースをオフラインにすることはできませんが、ログファイルを転送するだけです(朝に入る前にこれを完了できます)。データベースをオフライン状態にせずにライブデータベースファイルをコピーする方法はありますか?それとも、家に帰るまで待つべきでしょうか?

3
非クラスター化インデックスはクラスター化インデックスよりも高速ですか?
両方のテーブルは同じ構造で、各テーブルに19972行あります。インデックス作成を練習するために、同じ構造の両方のテーブルを作成して作成しました clustered index on persontb(BusinessEntityID) そして nonclustered index on Persontb_NC(BusinessEntityId) およびテーブル構造 BusinessEntityID int FirstName varchar(100) LastName varchar(100) -- Nonclusted key on businessentityid takes 38% SELECT BusinessEntityId from Persontb_NC WHERE businessentityid BETWEEN 400 AND 4000 -- CLustered key businessentityid takes 62% SELECT BusinessEntityId from persontb WHERE businessentityid BETWEEN 400 AND 4000 …

2
権限のないユーザーが利用できるリンクサーバー
リンクされているサーバーが表示されるはずのないユーザーがいます。 リンクサーバーは、私だけがアクセスできるように定義されていますが、誰でも見ることができます。 次の手順で新しいリンクサーバーを作成しました。 SSMSオブジェクトエクスプローラーをSQL Serverインスタンスに接続する 展開Server Objects、右クリックLinked Servers、左クリックNew Linked Server... Generalタブの下でサーバー名を選択SQL ServerしServer typeて書き込みます Security上部のタブの下でをクリックしAdd、「sa」を選択しLocal Login、Remote User名前を入力してRemote Password 下ではSecurity、タブ下部(下にFor a login not defined in the list above, connections will:)最初のオプションを選択します。Not be made クリックしOKてテストを開始 これで、リンクサーバーを見ることができるのは私( "sa")だけですが、どういうわけか他のユーザーはそれを見て使用できます。 注1:リンクサーバーを使用できるユーザーには、リモートサーバーに対するアクセス許可があり、表示すべきでないデータは表示されません。リンクサーバーからアクセスできないはずのデータにアクセスできます。 注2:sysadminどちらの場合も私だけです。

1
クロスデータベーストランザクションを実行する場合、どのトランザクションログに情報が保存されますか?
次のスニペットがあるとします。 -- error checking omitted for brevity begin tran exec database1..my_stored_procedure exec database2..my_other_stored_procedure if (@@error <> 0) rollback commit トランザクション情報はどのデータベースのトランザクションログに挿入されますか? database1トランザクションログを再生しようとしても、そのDBだけに影響を与えるのでは意味がないので、両方のログがすべてのデータを取得すると思います。また、存在しないdatabase1サーバーでdatabase2はのトランザクションログを再生できず、その逆も同様です。 ..しかし、私は修正にオープンです!

1
SQL Serverの複数のインスタンスのメモリを構成するにはどうすればよいですか?
同じ仮想サーバー上で実行される一連のSQL Serverインスタンス(2008 R2)があります。各インスタンスは、開発サイクル(開発/テスト/ステージなど)のステージを表します。すべてのインスタンスは常にオンラインである必要がありますが、リリースライフサイクルのどこにいるかによって、負荷は一度に1つのインスタンスに分離される傾向があります。 SQL Serverは、最大値として設定したメモリ量を取得して保持するようです。インスタンスがメモリ消費について「スマート」になるように構成して、必要なときに互いがメモリを取得するのをブロックしないようにする方法があるかどうかを知りたい。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.