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

SQL Server 2008(メジャービルドバージョン10.00.xxxx)。また、sql-serverでタグ付けしてください。

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され、そのデータベースのコピーを持つ我々のテストデータベースに、。

3
100 GBテーブルにクラスター化インデックスを作成する方法
約30億行のディスク容量約104 GBを占めるヒープテーブルがあります。このテーブルの[ WeekEndingDate]列にクラスター化インデックスを作成しようとしています。データファイルには約200 GBの空き容量があり、tempdbには約280 GBの空き容量があります。 私は2つの異なる方法を試しました。最初に、次のコマンドを使用してテーブルに直接インデックスを作成しました。 CREATE CLUSTERED INDEX CX_WT_FOLD_HISTORY ON WT_FOLD_HISTORY (WeekEndingDate ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = ON, IGNORE_DUP_KEY = OFF , ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, DATA_COMPRESSION = PAGE) 私は両方のそれを試してみましたSORT_IN_TEMPDB = ONとOFF。使用するONとtempdbがOFFいっぱいになり、データドライブがいっぱいになります。 他の方法は、必要なインデックスで新しい空のテーブルを作成し、ヒープから新しいテーブルにレコードを挿入することでした。データドライブがいっぱいになった後も、これは失敗しました。 何をすべきかに関するその他の提案。私が読んだほとんどのことは、インデックスを作成するときにワークスペースとして使用するには、テーブルの約1.2倍のサイズが必要だと述べています。私はそれよりはるかに多く持っていますが、それでも失敗します。任意の提案をいただければ幸いです。 これが私の元のヒープテーブル構造です。 CREATE TABLE [dbo].[WT_FOLD_HISTORY]( [WeekEndingDate] …

2
指定された値から別の指定された値までの行を選択します
複数の列を含むテーブルがあり、列の値を確認したいのですが、別の列の値が表示されるまで、その列の値の後の行を選択します。私はを使用してみましたBETWEENが、列の値が整数の場合、整数間の数値のみを検索します。 たとえば、次のようなテーブルがあるとします。 id時間値 t1 12:00 PM 15 t1 12:02 PM 4 t1 12:03 PM 7 t1 12:05 PM 16 t5 12:10 PM 250 t5 12:15 PM 15 t8 11:00 AM 15 t8 3:00 PM 2 t8 3:05 PM 100 t2 7:00 PM 15 t2 7:01 PM 16 t15 5:00 AM …

2
変更された行ごとにカウンターを増やす
SEQUENCE機能のないSQL Server 2008 Standardを使用しています。 外部システムは、メインデータベースのいくつかの専用テーブルからデータを読み取ります。外部システムはデータのコピーを保持し、データの変更を定期的にチェックして、そのコピーを更新します。 同期を効率的にするために、前回の同期以降に更新または挿入された行のみを転送したいと思います。(行が削除されることはありません)。前回の同期以降に更新または挿入された行を知るために、各テーブルにbigint列RowUpdateCounterがあります。 行が挿入または更新されるたびに、そのRowUpdateCounter列の数が変化するという考え方です。RowUpdateCounter列に入る値は、増え続ける数列から取得する必要があります。RowUpdateCounter列の値は一意である必要があり、テーブルに格納される各新しい値は、以前のどの値よりも大きくなければなりません。 望ましい動作を示すスクリプトをご覧ください。 スキーマ CREATE TABLE [dbo].[Test]( [ID] [int] NOT NULL, [Value] [varchar](50) NOT NULL, [RowUpdateCounter] [bigint] NOT NULL, CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED ( [ID] ASC )) GO CREATE UNIQUE NONCLUSTERED INDEX [IX_RowUpdateCounter] ON [dbo].[Test] ( [RowUpdateCounter] ASC ) GO いくつかの行を挿入 INSERT INTO [dbo].[Test] …


2
透過的なデータ暗号化
SQL Server 2008でTDEを構成する際のベストプラクティスはありますか?SQLMagの記事「透過的データ暗号化に関するFAQ」では、CPUの使用率が最大30%増加した可能性があるとありますか? サーバーの処理能力を追加する以外に、TDEをオンにするときにDBAが通常行うことは他にありますか?

1
スタンバイファイルなしでスタンバイ/読み取り専用からSQLデータベースを回復できますか?
「スタンバイファイル」がない場合、SQLデータベースをスタンバイ/読み取り専用モードから回復する方法はありますか? (ログ配布シナリオでこれをTUFファイルと呼ぶ参照がいくつかありますが、私の場合、それは手動の復元であり、スタンバイファイルにはBAK拡張子が付いていました。) 「RESTORE DATABASE foo WITH RECOVERY」を実行すると、致命的なエラーが発生します。 During startup of warm standby database 'foo', its standby file ('path\filename.bak') was inaccessible to the RESTORE statement. The operating system error was '5(Access is denied.)'. Diagnose the operating system error, correct the problem, and retry startup. 復元は少し前に行われましたが、残念ながらスタンバイファイルはバックアップフォルダーにあり、フォルダーのクリーンアップルーチンによって削除されました。他のメディアにはファイルのコピーはありません。この時点まで復元するために使用された元のバックアップもなくなりました。 幸い、これは私たちにとって大した問題ではありませんが(一時的な復元でした)、「このファイルを削除しないでください」以外に、この質問に関して他の有用な参照を見つけることができませんでした。 それが原因である場合は、データベース全体をスクリプト化するか、SSISを使用してすべてのオブジェクトを新しいデータベースコンテナーにコピーできると思います。目の前にデータベースの読み取り専用コピーがあるからです。 この問題を修正する方法はありますか?「復元」に戻して、その後の復元などを続行できるとは思いませんが、現在の状態で通常のオンラインモードに強制的に切り替えて、アクセス許可の変更、回復モードの変更、新しい完全バックアップなどを実行します。

1
1秒あたりのトランザクション数が非常に多い
本番サーバーは、1秒あたり平均4,000トランザクションで実行されます。過去数日間で、平均は毎秒175,000トランザクションに急上昇しました。これはタイプミスではなく、1秒あたり175Kです。 トランザクションのDMVを見ると、ユーザーセッションに直接リンクすることはできませんが、次のように表示されます。 SELECT NAME, COUNT(*) FROM sys.dm_tran_active_transactions GROUP BY NAME ORDER BY 2 DESC - +------------------------------+-------+ | Name | Count | +------------------------------+-------+ | WorkFileGroup_fake_worktable | 627 | | LobStorageProviderSession | 217 | | workfile | 171 | +------------------------------+-------+ 誰かがこれらのタイプの取引に光を当てることができますか?または、私はここで幽霊を追いかけていますか?

3
誤ってデータベース名を変更する(SQL Server 2008)
それは私にはまだ起こりませんでした。しかし、私はこれについて考えていました。 トレーニング環境をいじくり回していて、誤ってデータベース名をクリックしてから、文字Aに触れました。 Enterキーを押したとしましょう。現在、データベースの名前はAですが、元の名前を覚えていません。CTRL + Zは機能しません。 このような場合、本番環境ではどうしますか? データベースがSINGLE USERとして設定されていないため、それが起こり得ないことはわかっています。しかし、それが起こった場合。何をすべきか?議論のために、それは現在誰も使用していないデータベースだとしましょう。


9
エラー:SSPIコンテキストを生成できません
誰かがSQL Serverインスタンスに接続しようとすると、エラーが表示されます。 SSPIコンテキストを生成することはできません。 昨日、停電があり(この表現を英語でどう言うかわからない)、サーバーをシャットダウンする必要がありました。 答えを探して、私はこれを見つけました: SQL Server 2008の接続の問題:SSPIコンテキストを生成できません しかし、彼らは昨日までうまく機能しているので、私には役に立ちません。何も変えたくない。しかし、もし必要なら、私はそれを変えます。 Obs:サーバーを再起動できません。 編集:私の回答以来、エラーは発生していません。

2
SQL Server 2008で10秒未満のジョブをスケジュールする方法
3秒ごとにジョブを実行したいのですが、SQL Server 2008では10秒未満の間隔を定義できません。 このジョブは、訪問者情報とセグメンテーション情報を、Google検索で追跡されるデータベースに挿入/更新するために使用されます。 2〜3秒で最大約100行が挿入されます。そのジョブは、データベースにテーブルを挿入して更新します。spジョブスケジューリング構成を使用してスケジュールする方法はありますか?

1
日付ディメンションテーブルにデータを入力するための最適な方法
SQL Server 2008データベースに日付ディメンションテーブルを設定することを検討しています。テーブルのフィールドは次のとおりです。 [DateId] INT IDENTITY(1,1) PRIMARY KEY [DateTime] DATETIME [Date] DATE [DayOfWeek_Number] TINYINT [DayOfWeek_Name] VARCHAR(9) [DayOfWeek_ShortName] VARCHAR(3) [Week_Number] TINYINT [Fiscal_DayOfMonth] TINYINT [Fiscal_Month_Number] TINYINT [Fiscal_Month_Name] VARCHAR(12) [Fiscal_Month_ShortName] VARCHAR(3) [Fiscal_Quarter] TINYINT [Fiscal_Year] INT [Calendar_DayOfMonth] TINYINT [Calendar_Month Number] TINYINT [Calendar_Month_Name] VARCHAR(9) [Calendar_Month_ShortName] VARCHAR(3) [Calendar_Quarter] TINYINT [Calendar_Year] INT [IsLeapYear] BIT [IsWeekDay] BIT [IsWeekend] …

1
インデックスは、個別のSELECTと比較してOR条件を使用するとはるかに遅くなります
これらの質問と与えられた回答に基づいて: SQL 2008 Server-非常に大きなテーブルに接続されている可能性があるパフォーマンスの損失 履歴データを含む大きなテーブルは、SQL Server 2008 Stdを過剰に割り当てます。メモリ-他のデータベースのパフォーマンス低下 データベースSupervisionPに次のように定義されたテーブルがあります。 CREATE TABLE [dbo].[PenData]( [IDUkazatel] [smallint] NOT NULL, [Cas] [datetime2](0) NOT NULL, [Hodnota] [real] NULL, [HodnotaMax] [real] NULL, [HodnotaMin] [real] NULL, CONSTRAINT [PK_Data] PRIMARY KEY CLUSTERED ( [IDUkazatel] ASC, [Cas] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS …

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