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

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

1
この定数スキャンと左外部結合は、単純なSELECTクエリプランのどこから来たのですか?
私はこの表を持っています: CREATE TABLE [dbo].[Accounts] ( [AccountId] UNIQUEIDENTIFIER UNIQUE NOT NULL DEFAULT NEWID(), -- WHATEVER other columns ); GO CREATE UNIQUE CLUSTERED INDEX [AccountsIndex] ON [dbo].[Accounts]([AccountId] ASC); GO このクエリ: DECLARE @result UNIQUEIDENTIFIER SELECT @result = AccountId FROM Accounts WHERE AccountId='guid-here' 単一のインデックスシークで構成されるクエリプランで実行します-予想どおり: SELECT <---- Clustered Index Seek このクエリは同じことを行います。 DECLARE @result UNIQUEIDENTIFIER SET …

1
SET STATISTICS IO-ワークテーブル/ワークファイル
私はクエリを実行しています、それは計画を生成します: 統計IO: Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'Workfile'. Scan count 128, logical reads 5952, physical reads 576, read-ahead reads 6080, lob logical reads 0, lob physical reads 0, …

3
CPU使用率は外部NUMAアクセスのコストに影響しますか?
シナリオ 1つのNUMAノードごとに4つのソケットを持つSQL Serverがあるとします。各ソケットには4つの物理コアがあります。合計512 GBのメモリがあるため、各NUMAノードには128 GBのRAMがあります。 キーテーブルが最初のNUMAノードにロードされます。 質問 そのテーブルから多くのトラフィックを読み取っていると仮定しましょう。NUMAノードを所有するソケットのすべての物理コアのCPU使用率が100%の場合、他のソケットからの非ローカルNUMAアクセスのコストに悪影響を及ぼしますか?または、その一方で、非ローカルNUMAアクセスのコストは、そのソケットがどれほどビジーであるかに関係ありませんか? 私の質問が理にかなっていることを願っています。明確にならない場合はお知らせください。 バックグラウンド 先週、本番サーバーでデータベースの問題が発生し、処理されたビジネスの一部が他のビジネスよりも大きな影響を受けたようです。1分以上かかる論理読み取りの少ないクエリがありました。全体のCPU使用率を調べたところ、約60%でした。ソケット固有のCPUメトリックは確認しませんでした。I / Oメトリックは平均でした。

1
増分更新後に統計が消える
増分統計を利用する大規模なパーティションSQL Serverデータベースがあります。すべてのインデックスはパーティション分割されています。パーティションごとにオンラインでパーティションを再構築しようとすると、インデックスが再構築された後にすべての統計が消えます。 以下は、AdventureWorks2014データベースを使用してSQL Server 2014の問題を再現するスクリプトです。 --Example against AdventureWorks2014 Database CREATE PARTITION FUNCTION TransactionRangePF1 (DATETIME) AS RANGE RIGHT FOR VALUES ( '20130501', '20130601', '20130701', '20130801', '20130901', '20131001', '20131101', '20131201', '20140101', '20140201', '20140301' ); GO CREATE PARTITION SCHEME TransactionsPS1 AS PARTITION TransactionRangePF1 TO ( [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], [PRIMARY], …

5
この明示的なキャストがリンクサーバーでのみ問題を引き起こすのはなぜですか?
オリジンサーバーのビューを介してリンクサーバーからデータをクエリしています。ビューは、次のような標準化された列のカップルを含める必要がありCreated、ModifiedかつDeleted、この場合には、ソース・サーバー上の表は、任意の適切な情報を持っていません。したがって、列はそれぞれの型に明示的にキャストされます。ビューを更新し、列を NULL AS Modified に CAST(NULL as DateTime) as Modified ただし、この更新の実行後、ビューは次のエラーメッセージをトリガーします。 メッセージ7341、レベル16、状態2、行3列 "(ユーザー生成式).Expr1002"の現在の行値をOLE DBプロバイダー "SQLNCLI11"からリンクサーバー ""に取得できません。 この「明示的なキャスト」の変更は、通常、問題なくオリジンサーバー全体で行われましたが、問題は関連するサーバーのバージョンに関連している可能性があります。このキャストを実際に適用する必要はありませんが、よりクリーンに感じます。今、私はなぜこれが起こっているのか興味があります。 サーバーバージョン(オリジン): Microsoft SQL Server 2012-11.0.5058.0(X64)2014年5月14日18:34:29 Copyright(c)Microsoft Corporation Enterprise Edition(64-bit)on Windows NT 6.1(Build 7601:Service Pack 1)(ハイパーバイザー) サーバーバージョン(リンク): Microsoft SQL Server 2008 R2(SP1)-10.50.2500.0(X64)2011年6月17日00:54:03 Copyright(c)Microsoft Corporation Enterprise Edition(64-bit)on Windows NT 6.1(Build 7601:Service Pack 1)(ハイパーバイザー) 編集 問題の列をすべて掲載しないことでミスを犯したことに気付いたので、重要な詳細を省いたことを謝罪する必要があります。これに気づかなかったのは早く分かりません。しかし、疑問はまだ残っています。 …

1
SQL Server 2014はバッチモードで正確に何を実行できますか?
クエリで列ストアインデックスが使用されている場合、SQL Serverはバッチモードを使用できます。ドキュメントは、バッチモードで実行できるものとできないものについては薄い。バッチモード(緑色)で驚くほど多くのことが実行される、次の(動機付けの)クエリプランをご覧ください。 (これは推定プランです。実際のプランを使用して、実際の実行モードが実際にバッチであることを確認しました。) T1のビルド側のみが列ストアインデックスを使用することに注意してください。すべてのプローブ入力(T2およびT3)は行ストアです。彼らのデータはバッチモードに移行しているようです。プローブ側のみで実行されるデータストリームにはバッチモードが使用されていると常に考えていました。 列ストアインデックスに由来しない場合でも、データはバッチモードに移行できるようです。それは疑問を提起します:なぜSQL Serverは行ストアのみのクエリにもバッチモードを使用しないのですか?それらのいくつかのために有益である可能性があります。列ストアインデックスの使用は、SQL Serverでバッチモードを考慮するために必要な正式な要件ですか?列ストアインデックスを持つゼロ行のダミーテーブルを追加して、バッチモードを導入し、パフォーマンスの向上を実現できますか? SQL Server 2014の時点でバッチモードで正確に実行できるものは何ですか?

5
SQL ServerがWindowsの起動時に起動しないが、手動で起動する
SQL Serverインスタンスの(SQL Server 2008 R2 Express)サービスのスタートアップの種類=自動です。過去2、3回コンピューターを再起動しましたが、サービスは単独で開始できませんでしたが、手動でサービスを開始すると正常に開始します。 イベントビューアは、接続タイムアウトのためにサービスが開始できないことを示しています。このタイムアウトに関して2つのエントリがあります。 エントリー1 SQL Server(SQLEXPRESS)サービスの接続を待機中にタイムアウト(30000ミリ秒)に達しました。 エントリー2 次のエラーが原因で、SQL Server(SQLEXPRESS)サービスを開始できませんでした:サービスが開始要求または制御要求にタイムリーに応答しませんでした。 ERRORLOGファイルを確認しましたが、これらのイベントビューアーエントリの時間の周りにエラーは記録されていません。 この問題の原因に関するアイデアや、さらに調査する方法はありますか?

3
テーブルが主キーをそれ自体の外部キーとして使用する理由
データベースを調べてみると、主キーをそれ自体の外部キーとして使用するテーブルに出会いました。 テーブルは、階層構造を構築するためにそれ自体への外部キーを持つことができますが、主キーを参照するために別の列を使用します。 主キーは一意であるため、この状況では行は自分自身を指すことしかできませんか?これはトートロジーのリンクのようです。なぜなら、もし私が列をすでに持っているなら、列をすでに持っているからです。 これが行われる理由はありますか? 定義の両方の半分に同じテーブルと列が使用されているため、制約はそのように書かれています(ダイアグラムを見るだけではありません)。

2
キューブのメジャーとディメンションとは
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 6年前に移行され ました。 私は、Microsoft SQL Serverのビジネスインテリジェンスへの非常に新しいだとAnalysis Service(私はSQL Serverとの年のためのプログラミングてる).Canいずれかでキューブにメジャーとディメンションを記述する簡単な言葉(それはイメージで可能なら)? ありがとう

2
SQL ServerでLRU-K値を表示することはできますか?
SQL Server sys.dm_os_memory_cache_entriesでは、キャッシュ内のエントリの元のコストとキャッシュエントリの現在のコスト(original_costおよびcurrent_costそれぞれ)の両方を表示できます。DMVにsys.dm_os_buffer_descriptorsは、現在メモリ内にあるページのレコードと、ページに関するメタデータが含まれています。DVMで利用できない興味深い情報の1つは、データページのLRU-K値です。 SQL ServerのバッファプールのデータページのLRU-K値を取得することは可能ですか?もしそうなら、どのように?
21 sql-server 

6
SQL Serverでは、選択した行グループがロックされているかどうかを確認する方法はありますか?
数十億行のテーブルの多数のレコードを更新/削除しようとしています。これは一般的なテーブルであるため、このテーブルのさまざまなセクションで多くのアクティビティがあります。すべての行のロックまたはページロックまたはテーブルロックの取得を待機しているため、大規模な更新/削除アクティビティが長時間ブロックされているため、タイムアウトになるか、タスクの完了に数日かかります。 そのため、一度に行の小さなバッチを削除するアプローチを変更しています。しかし、選択された(たとえば、100または1000または2000行)が現在別のプロセスによってロックされているかどうかを確認します。 そうでない場合は、削除/更新に進みます。 ロックされている場合は、次のグループのレコードに進みます。 最後に、最初に戻って、残ったものを更新/削除してみてください。 これは実行可能ですか? ありがとう、ToC

2
エラーで接続プールがリセットされます:18056、重大度:20、状態:46。Perfmonカウンターが表示されない
SQL認証(接続プールの数を減らすため)と.NET 4.0接続文字列を使用して、Windows 2008 R2 Enterprise Server上のSQL Server Enterprise Edition 2012 SP1に接続しています。 Microsoft SQL Server 2012(SP1)-11.0.3000.0(X64) 2012年10月19日13:38:57 Copyright(c)Microsoft Corporation Enterprise Edition(64ビット)on Windows NT 6.1(Build 7601:Service Pack 1) Webサイトの異なる部分にある8つの異なるグループに分割された約50台のサーバーを使用します。 当社のWebサイトでは、このSQL Serverを使用して訪問追跡データを記録しています。過去数日間にわたって、接続プールのリセットに関する次のメッセージが吐き出されました。 クライアントは、接続プーリング用にリセットされたSPID 1327のセッションを再利用できませんでした。失敗IDは46です。このエラーは、以前の操作が失敗したことが原因である可能性があります。このエラーメッセージの直前に、失敗した操作のエラーログを確認します。 エラーログの読み取り: エラー:18056、重大度:20、状態:46 。クライアントは、接続プーリング用にリセットされたSPID 959のセッションを再利用できませんでした。失敗IDは46です。このエラーは、以前の操作が失敗したことが原因である可能性があります。このエラーメッセージの直前に、失敗した操作のエラーログを確認します。 ユーザー 'xxxx'のログインに失敗しました。理由:接続でのログインの再検証中に、ログインオブジェクトで構成されたデータベース 'xxxxxxxx'を開くことができませんでした。[クライアント:10.xx.xx.xxx] :いくつかの掘削後、私はCSSのブログにこの文書を発見したエラー18056 -クライアントが接続プーリングのためにリセットされたSPIDとのセッション##、再利用することができませんでした:それはしくみとアーロン・ベルトランこの1:トラブルシューティングエラー18456を。私はエラー番号が異なることを知っていますが、障害IDは同じであり、メッセージの数は同じです)。 失敗ID 46は、ログインに権限がなかったことを示しています。ログインはデフォルトでmasterデータベースになり、db名は接続文字列で指定されます。 接続文字列プールなどの数を確認したいと思い、Perfmonのすべてのカウンターを確認しました.Net Data Provider for SqlServer。defaultdomain9675インスタンスのオプションしか提供されなかったため、Datacentreネットワークのシステム生成ID名を想定しています。残念ながら、すべてのカウンターはゼロを読み取っています。他のメインサーバーの1つでは、接続プールは約10をホバリングしています。 私の質問は3倍です Windows 2008 …

1
データベースで最近実行されたすべてのクエリを見つける
[私は初心者レベルのT-SQLプログラマーです] [..できれば、適切なスタック交換サイトにいます] 私が実行したすべてのクエリのリストを取得したいと思います(少なくとも、朝から今日実行したクエリ)。クエリの実行時間に関するレポートを作成する必要があります。 オンライン検索で役に立つ情報はあまり得られませんでした。私がオンラインで見つけた非常に近いと思われるクエリは SELECT deqs.last_execution_time AS [Time], dest.TEXT AS [Query] FROM sys.dm_exec_query_stats AS deqs CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest ORDER BY deqs.last_execution_time DESC このクエリはいくつかの奇妙な結果を返しました(そのほとんどは多数のsprocでした)。さらに、これらの結果はすべて、今日の午後から実行されたクエリを示しています(午前中にクエリが必要です)。 以前の質問には何も見つかりませんでした(同様の質問が既に質問されている場合は、それを指摘してください)。 SQLプロファイラーに関するいくつかの提案を見ましたが、プロファイラーは既にトレースを開始している場合にのみ役立つと思います(間違っている場合は修正してください)。 誰かが私に朝からデータベースで実行されたすべてのクエリのリストを取得する方法を提案できますか(クエリ実行時間を含む)。 [クエリを実行したユーザーのユーザー名も何らかの方法で取得できると便利です(要件ではありません)]

3
2008サーバーでSQL Server Management Studio 2012を使用できますか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 私の学校はSQL Server 2008を使用しています。前回使用したときは、(自宅で)SQL Server Management Studio 2008の一部のみをインストールし、VPNを使用して学校のサーバーに接続しました。 SQL Server Management Studioを再度インストールしたいのですが、今回は2012バージョンが利用可能です。 SQL Server Management Studio 2012は、学校のSQL Server 2008で動作しますか?または、2008バージョンが必要ですか?
21 sql-server  ssms 

3
親子ツリー階層順序
SQL Server 2008 R2のデータをフォローする必要があります。SQLFiddle スキーマ: CREATE TABLE [dbo]。[ICFilters]( [ICFilterID] [int] IDENTITY(1,1)NOT NULL、 [ParentID] [int] NOT NULL DEFAULT 0、 [FilterDesc] [varchar](50)NOT NULL、 [アクティブ] [tinyint] NOT NULL DEFAULT 1、 CONSTRAINT [PK_ICFilters] PRIMARY KEY CLUSTERED ([ICFilterID] ASC)WITH PAD_INDEX = OFF、 STATISTICS_NORECOMPUTE = OFF、 IGNORE_DUP_KEY = OFF、 ALLOW_ROW_LOCKS = ON、 ALLOW_PAGE_LOCKS = ON )ON …

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