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

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

1
コミットされた読み取りスナップショット分離(RCSI)で取得された共有ロック
LCK_M_SRCSIを使用すると、共有ロックの待機()が発生します。私の理解では、SELECTsRCSIを使用するときに共有ロックを必要としないため、これは発生しないはずです。 共有ロックを確認するにはどうすればよいですか?外部キーが原因ですか?

3
TempDBのパーティションが破損していると、DBCC CHECKDBで問題が報告されないのはなぜですか。
SQL Serverの1つが最近次のエラーを報告しました: DATE/TIME: 2/25/2013 9:15:14 PM DESCRIPTION: No catalog entry found for partition ID 9079262474267394048 in database 2. The metadata is inconsistent. Run DBCC CHECKDB to check for a metadata corruption. 15分以内にサーバーに接続して実行しました。 SELECT name FROM sys.databases WHERE database_id = 2; これは「tempdb」を返しました。次に実行しました: DBCC CHECKDB ('tempdb') WITH NO_INFOMSGS, TABLERESULTS; 結果は返されず、影響を受けるデータベースに問題がないことを示しています。 データベースが破損すると、上記のエラーメッセージが表示されDBCC CHECKDB、問題が報告されないのはなぜですか。ページのチェックサム計算が失敗し、そのページを参照しているオブジェクトを削除できないと疑われるページがマークされた場合、私は推測しますが、私は間違っているはずです。 …

3
SQL Server Expressの最大接続数は?
SQL Server 2005 Expressエディションをクライアントマシンの1つにインストールし、他の多くのユーザーも、インターフェイスとして提供したC#アプリケーションを介してそのSQL Serverに接続しています。 PCがSQL Serverに接続され、例外がスローされる場合がある SQL Serverが見つかりません... Expressエディションが最大接続制限に達し、エラーが発生すると思います。 この問題を解決する方法を教えてください。 どのエディションのパラレル接続がいくつあるかを知るのに役立つホワイトペーパー、 SQL Server 2008またはSQL Server 2012にアップグレードすることはできますが、Expressエディションを好みます。私が他のバージョンでもこのコンテキストで本当に私に返済するなら、そうすることができます、そうでなければExpressエディションはうまくいきます。

2
nullまたは空のテーブル値パラメーターを確認するにはどうすればよいですか?
ストアドプロシージャ(SS2k8)があり、テーブル値パラメーターがいくつかあり、それらがnullまたは空になる場合があります。このStackOverflowの投稿を見たところ、null /空のTVPは呼び出しパラメーターリストから単に削除する必要があると述べています。私の問題は、「IF(@tvp IS NULL)」がプロシージャの作成に失敗し、「スカラー変数「@tvpを宣言する必要があります」というメッセージが表示されるため、ストアドプロシージャ内の空またはnullを確認する方法を理解できないことです。TVPでSELECT COUNT(*)を実行してゼロを確認する必要がありますか? コードの抜粋: CREATE PROCEDURE [foo] (@tvp [TvpType] READONLY) AS IF (@tvp IS NOT NULL) -- doesn't work BEGIN -- lots of expensive processing END ELSE BEGIN -- a little bit of cheap processing END ...

1
結合された仮想テーブルのNEWID()により、意図しないクロス適用動作が発生する
私の実際の作業クエリは内部結合でしたが、クロス結合を使用したこの単純な例では、ほとんど常に問題が再現されているようです。 SELECT * FROM ( SELECT 1 UNION ALL SELECT 2 ) AA ( A ) CROSS JOIN ( SELECT NEWID() TEST_ID ) BB ( B ) 私の内部結合では、NEWID()関数を使用して各行にGUIDを追加した多くの行があり、そのような行の約9に対して、2行の仮想テーブルとの乗算により期待される結果が生成されました。同じGUID。10のうち1つは異なる結果を生成します。これは控えめに言っても予想外であり、テストデータ生成スクリプトでこのバグを見つけるのに本当に苦労しました。 非決定的なgetdate関数とsysdatetime関数を使用して次のクエリを見ると、これは表示されません。私はとにかく、両方の最終結果行に常に同じdatetime値を表示しています。 SELECT * FROM ( SELECT 1 UNION ALL SELECT 2 ) AA ( A ) CROSS JOIN ( SELECT GETDATE() TEST_ID …

3
孤立した## MS_PolicyEventProcessingLogin ##の原因は何ですか?
今朝、SQLログが次のメッセージでいっぱいになっていることに気付きました。 アクティブにprocの「[dboは] [sp_syspolicy_events_reader]。」は次のキュー「msdb.dbo.syspolicy_event_queue」出力で実行されている: 「校長『## MS_PolicyEventProcessingLogin ##』、このタイプの存在しないため、データベースプリンシパルとして実行できませんプリンシパルを偽装することはできません、またはあなたには許可がありません。 以下を実行するEXEC sp_change_users_login 'report'と、ログインが実際に孤立していることがわかりました。 このMSDNの投稿で推奨されているように、以下を実行することで修正できました。 EXEC sp_change_users_login 'Auto_Fix', '##MS_PolicyEventProcessingLogin##', NULL, 'fakepassword' しかし、問題は残っています:このプリンシパルがそもそも孤児になった原因は何でしょうか?グーグルで調べて調べたところ、他の人がこの問題を抱えていることがわかりましたが、原因の説明はまだわかりません。エラーが発生し始めた瞬間、私が気づいていることは何も起こりませんでした。 昨年の夏にサーバー全体をSANストレージモデルに移動しました。その移動中にすべて(msdbを含む)を復元しましたが、それは数か月前でした。数週間前よりも早くログに表示されないため、症状が現れたのは最近のことでした。

3
いつインデックスを削除して再作成する必要がありますか?
最初は1 TBで、毎月約20ギガバイト成長するデータウェアハウスを構築しています。 特定のテーブルについては、毎日ETLプロセスを行っており、他のテーブルについては毎週/毎月行っています。 テーブルへのデータインポートがある場合、インデックスを削除して再作成する必要がありますか? インデックスを削除して再作成するポイントはありますか、それとも自動的に更新されますか? 統計は自動的に更新されるように設定されています。 あなたの助けと指導を本当にありがとう。 私はこの天才的なスクリプトを得ました: SELECT 'ALTER INDEX [' + ix.name + '] ON [' + s.name + '].[' + t.name + '] ' + CASE WHEN ps.avg_fragmentation_in_percent > 40 THEN 'REBUILD' ELSE 'REORGANIZE' END + CASE WHEN pc.partition_count > 1 THEN ' PARTITION = ' + …


2
大規模なSQL Serverデータベースのバックアップ中にデータ更新操作を実行する
大規模な(数千万レコードの)データベースがあり、データベースの完全バックアップを実行します。 ただし、データベースは十分に大きいため、バックアップの実行前および実行中にトランザクションを開始できるだけでなく、バ​​ックアップの実行中および実行後にコミットすることもできます。 例えば: T0 = Transaction A start T1 = Full database backup start T2 = Transaction B start (will not deadlock with A) T3 = Transaction A commit/rollback (does not matter, does it?) T4 = Full database backup end T5 = Transaction B commit/rollback (again, does not matter, does …

2
REBUILD-クラスタ化インデックス、TABLE、またはその両方?
これに関する決定的なリソースをどこでも見つけるのに苦労しているので、グルがここで答えを出してくれるといいのですが。 列を追加する必要がある非常に大きなテーブルがあります。クラスタ化インデックスはかなり高度に断片化されておりALTER INDEX REBUILD、クリーンアップするために実行したいと思います。 また、通常はALTER TABLE REBUILD列を変更するときにも行います。これにより、その操作からのポインターまたは分割がクリーンアップされるためです。 クラスター化インデックス(基本的にはテーブル)について話しているので、両方を実行する必要がありますか? 私の疑いは、ALTER INDEX REBUILDクラスター化された意志が意志のすべてを更新するわけではないALTER TABLEことですがALTER TABLE、インデックスの断片化がクリーンアップされないことも心配です。

1
テーブルはどのくらいのメモリを使用していますか?
SQL Server(2005以降)でテーブルが使用しているメモリの量を調べる方法はありますか? たとえば、3000万レコードのテーブルがあるとします。インデックス、データ、テキスト/イメージページなど、このテーブルに属するページが現在バッファキャッシュにあるページ数を教えてください。 私はこのクエリをPinal Daveが見つけましたが、このクエリはインデックスによって割り当てられたページのみを返すようです(クラスター化されているかどうかにかかわらず)。

2
統計が最後に実行された日時を確認するにはどうすればよいですか?
最近、私たちのDBAチームが統計が最近実行されなかったことが原因であるとインデックスについて多くの問題を抱えています。これにより、SQL Management Studioを介して統計情報が最近更新されたかどうかを確認するにはどうすればよいですか。 この質問がこれをうまく説明していない場合はお詫び申し上げます。私はこれまで統計について紹介されてきただけで、以前はパフォーマンス関連の問題が発生するたびにインデックスを調べていました。 編集: 以下を使用していますが、構文エラーが表示されます。 use *databasename* exec sp_autostats *schema.tablename* 私が受け取っているエラーは: Msg 102, Level 15, State 1, Line 2 Incorrect syntax near '.'. どうしてこれなの?

1
実行計画の計算になぜそんなに時間がかかるのですか?
お客様の1人が新しいサーバーにアップグレードしました。 特定のストアドプロシージャを初めて実行すると、実行に3分以上かかります。後続の実行は1秒未満です。 これにより、最初の3分間は主に実行計画の計算に費やされると思います。その後の実行では、キャッシュされたプランを使用して即座に実行されます。 テストデータベースでは、同じ手順の計画を計算するのに約5秒かかります。 プラン自体にはひどいものは何もありません。ただし、プランはクエリの実行にかかる時間を示しており、計算自体は行わないため、関連性があるとは思いません。 サーバーは24ギガバイトのメモリを備えた16コアです。CPUやメモリの負荷が大きくなることはありません。 特定のデータベースでのみこのような遅い計算を引き起こしているのは何ですか? 問題の原因を特定するためにどのような手順を実行できますか? 編集する したがって、サーバーにアクセスして、SET SHOWPLAN_XML ONを指定してクエリを実行できました。 クエリのCompileTimeがクエリ実行時間の99%を占めていることを確認できます。StatementOptmEarlyAbortReasonがある「タイムアウト」理由はMemoryLimitExceededされ、そのデータベースのコピーを持つ我々のテストデータベースに、。

1
LDFファイルからデータを回復するにはどうすればよいですか?
SQL 2005 Express Editionを使用しています。一部の削除されたレコードを復元するために、LDFファイルからデータを読み取ります。 ApexSQLの試用版を使用してみました。サードパーティのソフトウェアを使用する代わりに、ログファイルを自分で読み取る方法を見つけようとしています。 LDFファイルからデータを読み取って回復するにはどうすればよいですか?

1
テーブルの圧縮はSQL Serverのバッファプールにどのように影響しますか?
SQL Serverのバッファープールが圧縮データテーブルの影響を受ける方法について知りたいです。 メモリ内のデータは、ディスクと同じように圧縮されていますか、それとも完全に圧縮解除されていますか? データが圧縮されてバッファー・プールに保管されている場合、ステートメントの実行時に、一時的に解凍されたデータのうち、所定の時間にメモリーに保持される量。行/ページ、テーブル全体(データを保持するのに十分な空きページがあると想定)、または「依存する」?

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