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

SQL Server 2012(メジャービルドバージョン11.00.xxxx)。sql-serverにもタグを付けてください。

3
SQL Serverは、バッファキャッシュに十分なスペースがないクエリのデータをどのように処理しますか?
私の質問は、SQL Serverが、利用可能な領域よりも多くのデータをバッファキャッシュにプルする必要があるクエリをどのように処理するかです。このクエリには複数の結合が含まれているため、結果セットはこのフォーマットですでにディスク上に存在せず、結果をコンパイルする必要があります。ただし、コンパイル後でも、バッファキャッシュで使用可能な領域よりも多くの領域が必要です。 例を挙げましょう。合計6GBの利用可能なバッファキャッシュスペースを持つSQL Serverインスタンスがあるとします。7GBのデータを読み取る複数の結合を使用してクエリを実行しますが、SQL Serverはこの要求にどのように応答できますか?tempdbにデータを一時的に保存しますか?失敗しますか?ディスクからデータを読み取り、一度にセグメントをコンパイルするだけですか? さらに、7GBの合計データを返そうとするとどうなりますか?SQL Serverがデータを処理する方法は変わりますか? 私はこれに対処するいくつかの方法をすでに知っていますが、SQL Serverがこのように実行されたときに、SQL Serverがこの要求を内部的に処理する方法に興味があります。 また、この情報はどこかにあると思いますが、見つけるのに失敗しました。

3
非永続計算列SQLサーバーでの非クラスター化インデックスの作成
SQL Serverが非永続計算列を実際に格納する方法に関するドキュメントを見つけるのに苦労しています。 次の例を見てください。 --SCHEMA CREATE TABLE dbo.Invoice ( InvoiceID INT IDENTITY(1, 1) PRIMARY KEY, CustomerID INT FOREIGN KEY REFERENCES dbo.Customer(CustomerID), InvoiceStatus NVARCHAR(50) NOT NULL, InvoiceStatusID AS CASE InvoiceStatus WHEN 'Sent' THEN 1 WHEN 'Complete' THEN 2 WHEN 'Received' THEN 3 END ) GO --INDEX CREATE NONCLUSTERED INDEX IX_Invoice ON Invoice …

2
SQL Serverサンプルの統計更新では、昇順キー列で最も高いRANGE_HI_KEYが欠落しています
統計のサンプリングがどのように機能するか、およびサンプリングされた統計の更新に対して以下の動作が期待されるかどうかを理解しようとしています。 数十億行の日付で分割された大きなテーブルがあります。分割日は前の営業日であり、昇順のキーです。前日のデータのみをこのテーブルにロードします。 データの読み込みは夜間に実行されるため、4月8日金曜日に7日目のデータを読み込みました。 実行するたびに、統計を更新しますが、ではなくサンプルを使用しFULLSCANます。 たぶん私はナイーブですが、SQL Serverが範囲内の最高のキーと最低のキーを識別して、正確な範囲サンプルを確実に取得することを期待していました。この記事によると: 最初のバケットの場合、下限は、ヒストグラムが生成される列の最小値です。 ただし、最後のバケット/最大値については言及していません。 サンプリングされた統計の更新が8日の朝に行われたため、サンプルは表(7日)で最も高い値を逃しました。 前日のデータに対して多くのクエリを実行したため、カーディナリティの推定が不正確になり、多くのクエリがタイムアウトしました。 SQL Serverはそのキーの最高値を特定し、それを最大値として使用するべきではありませんRANGE_HI_KEYか?それとも、これを使用しない場合の更新の制限の1つにすぎFULLSCANませんか? バージョンSQL Server 2012 SP2-CU7。OPENQUERYSQL ServerとOracleの間のリンクサーバークエリの数値を切り捨てていたSP3の動作が変更されたため、現在アップグレードできません。


3
バックアップを実行するときのヘッダーのみの復元の使用は何ですか?
次のクエリでバックアップを監視すると: SELECT command, percent_complete, 'elapsed' = total_elapsed_time / 60000.0, 'remaining' = estimated_completion_time / 60000.0 FROM sys.dm_exec_requests WHERE command like 'BACKUP%' or command like 'RESTORE%' バックアップの前に、SQL Serverがヘッダーを復元してからバックアップを実行することに気づきました。 何に使うのか、なんとか実行時間を短縮できるのかと思っていました。実際のバックアップよりも時間がかかるようです。

1
何を試してもSQLCMDが機能しない
私が何をしようとも、SQLCMDを機能させることができません。サイズが200mb +で、SQLサーバーアプリケーションから実行できないスクリプトを実行しようとしているので、SQLCMDを介して実行する必要がありますが、スクリプトをログインまたは実行しようとすると、スクリプトはすぐに閉じます。 私はmsdnによってsqlcmdユーティリティを追跡しました。 信頼できるコマンドSQLCMD -EI getを使用してそれを実行しようとしました: Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Named Pipes Provider: Could not open a connection to SQL Server [2]. . Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Login timeout expired. Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : A …

4
FIRST()およびLAST()のSQL Server 2012バージョンは何ですか?
value列のあるテーブルがあります。次に示すように、最後の行から最初の行を差し引いて計算します。 id value 1 10 2 45 3 65 4 95 . . . . . . 500 200 入手したい 200 - 10 = 190 SQL Server 2012で以下のコマンドを使用しようとしましたがLAST、機能FIRSTしません。 SELECT LAST(Value) - FIRST(Value) FROM Counter; SQL Serverでのこのコマンドの構文は何ですか?

1
sys.dm_exec_sessionsの「reads」列は実際には何を示していますか?
これは非常に基本的な質問のように思えるかもしれませんが、実際にそうである必要があります。ただし、科学的手法のファンとして、私は仮説を立て、それをテストして自分が正しいかどうかを確認するのが好きです。この場合、私はの出力sys.dm_exec_sessions、より具体的には、単一列の「読み取り」をよりよく理解しようとしています。 SQL Server Books Onlineでは、これを次のように明確に指定しています。 このセッション中に、このセッションのリクエストによって実行された読み取りの数。null可能ではありません。 これは、セッションの開始以降、このセッションによって発行された要求を満たすためにディスクから読み取られたページの数を示していると考えられます。これは私がテストしようと思った仮説です。 logical_reads同じテーブルの列は次のように定義されます。 セッションで実行された論理読み取りの数。null可能ではありません。 SQL Serverの使用経験から、この列はディスクとメモリの両方から読み取られたページ数を反映していると思います。つまり、ページがどこにあるかに関係なく、セッションでこれまでに読み取られたページの総数です。同様の情報を提供する2つの別々の列を持つことの差別化要因、つまり価値命題は、特定のセッションでディスクから読み取られたページ()とバッファキャッシュから読み取られたページ()の比率を理解できるように思われるでしょう。readslogical_reads 私のテストリグでは、新しいデータベースを作成し、既知のページ数のデータを含む単一のテーブルを作成してから、新しいセッションでそのテーブルを読み取りました。次にsys.dm_exec_sessions、readsとのlogical_readsコラムがセッションについて何を言っているかを確認しました。この時点で私は結果に困惑しています。おそらくここにいる誰かが私にこれについていくつかの光を当てることができます。 テストリグ: USE master; IF EXISTS (SELECT 1 FROM sys.databases d WHERE d.name = 'TestReads') BEGIN ALTER DATABASE TestReads SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE TestReads; END GO CREATE DATABASE TestReads; GO ALTER DATABASE TestReads SET RECOVERY SIMPLE; …

4
別の列に基づいて積算合計をリセットする
現在の合計を計算しようとしています。ただし、累積合計が別の列の値よりも大きい場合はリセットする必要があります create table #reset_runn_total ( id int identity(1,1), val int, reset_val int, grp int ) insert into #reset_runn_total values (1,10,1), (8,12,1),(6,14,1),(5,10,1),(6,13,1),(3,11,1),(9,8,1),(10,12,1) SELECT Row_number()OVER(partition BY grp ORDER BY id)AS rn,* INTO #test FROM #reset_runn_total インデックスの詳細: CREATE UNIQUE CLUSTERED INDEX ix_load_reset_runn_total ON #test(rn, grp) サンプルデータ +----+-----+-----------+-----+ | id | val | reset_val …

2
SQL Serverフルテキストインデックスを有効にした後、クエリの更新が遅くなる
asp.net Webサイトで、データベースに対して実行される挿入、更新、削除のクエリが多数あります。 数日前に、1つのテーブルの2つの列にフルテキストインデックスを作成します。その後、Webサイトがそのテーブルに対して更新クエリを実行すると、SQL Serverプロセスのメモリとディスクの使用量が急激に増加し、更新が遅くなることがわかりました。クエリは、フルテキストインデックスを作成する前に、パフォーマンスの問題なしに実行されました。 以前は非常に単純だった更新クエリが複雑になっていることにも気づきました。これは、実行プランに全文インデックスの更新などがあるためです。これは、フルテキストを有効にした後に複雑になった新しい実行プランの一部です。 サイトのコンテンツを更新する数時間で、5000の更新クエリを実行しました。フルテキストインデックス処理は、各行で毎回行われると思います。 行の更新の開始時に全文スキャンを無効にしてから、再度有効にする必要がありますか(この関連質問のように)? SQL Serverにフルテキストインデックス作成を5分間停止してから、新しいデータのインデックス作成を開始するように指示できますか? より良い代替手段はありますか?SQL Server 2012を使用しています。

2
NUMAノード000でPLEが低い、001で高い
SQL ServerのNUMAノード全体のPLE(Page Life Expectancy)を調べていますが、かなり奇妙な分布に遭遇しました。NUMAノード000のPLEは001に比べて非常に低くなっています。これがなぜかはわかりません。環境内の他の複数のSQL Serverを確認しましたが、他の運用サーバーにはこの動作がありません。 システムは256GB RAMのDell m620でSQL Server 2012 Enterprise Editionを実行しています。2ソケット、6コア(HT対応)マシンです。MAXDOPは6に設定されています。AFAIKメモリモジュールは、CPUのメモリバンク全体に均等に取り付けられています。 NUMAノード000には他に実行すべきSQLタスクがあること、他のノードがあることを教えてくれますが、どこで聞いた/見たのか忘れてしまいました。 @@Version 表示:Microsoft SQL Server 2012(SP1)-11.0.3412.0(X64)

2
AlwaysOn可用性グループの自動フェールオーバーが機能しない
AGセットアップで遊ぶ私はWSFCを起動し、DevClusterOnlineと呼ばれる1つの可用性グループの2つのノードで構成しています。両方のノード(DEV-AWEB5プライマリ、DEV-AWEB6セカンダリ)はWindows Server 2008 R2を実行しています。 AGの状態をチェックすると、次のようになります。 以下のクエリを実行すると、この結果セットが返されます。 select ar.replica_server_name, availability_group_name = ag.name, ar.availability_mode_desc, ar.failover_mode_desc from sys.availability_replicas ar inner join sys.availability_groups ag on ar.group_id = ag.group_id order by availability_group_name, replica_server_name; DEV-AWEB5を切断すると、グループリスナー(DevListener)に接続できませんが、pingを実行すると、pingに応答します。レプリカ-DEV-AWEB6はRESOLVING状態になり、私のDBにアクセスできません。ただし、手動でManagement Studioに移動し、フェールオーバーをDEV-AWEB6に設定すると、再び起動して実行され、DevListenerがもう一度接続を受け入れます。 これらの事実がフェイルオーバーが実際に機能していることを確認していること、コミットを同期して自動フェイルオーバーを構成していることを考えると、セットアップで誤動作した場合はどうなるかわかりません。 DEV-AWEB5を切断すると、レプリカが接続を保持し、DevListenerも保持されることを期待しています。自動フェイルオーバーにより、AGリスナーに透過的に接続できると思います。エンドユーザーの観点から見ると、Webシステムを使用している場合、DBサーバーの1つがダウンしたことは気付かないはずです。 私はここで立ち往生しています、誰かが私が間違っていることを教えてくれますか?

3
一度に1文字を取り除く値のループ
値をループして、値から一度に1文字を削除し、結果を表示したいと思います。 したがって、値を持つテーブルがある場合: ID ___ 34679 13390 89906 結果はこのようにしたい Id ---- 4679 679 79 9 3390 390 90 0 9906 906 06 6

4
SQL Server 2012コピーデータベースが失敗しました
同じSqlServerにデータベースのコピーを作成したい。そのため、データベースコピーウィザードを使用すると、エラーがスローされます。 設定: saユーザー メソッド:「SQL管理オブジェクトメソッドを使用する」 宛先データベースの新しい名前を選択しました。 エラー: TITLE:データベースコピーウィザード ジョブは失敗しました。詳細については、移行先サーバーのイベントログを確認してください。 ------------------------------ボタン: OK イベントログ: システム プロバイダー [名前] SQLSERVERAGENT イベントID 208 [修飾子] 16384レベル3タスク3キーワード0x80000000000000 TimeCreated [SystemTime] 2014-05-07T06:23:11.000000000Z EventRecordID 123672 Channel Application Computer Server1 Security EventData CDW_Server1_Server1_3 0x666DE807F406D7438C65B09171211D7B Failed 2014-05-07 10:52:50ジョブが失敗しました。ジョブはユーザーsaによって呼び出されました。実行する最後のステップは、ステップ1(CDW_Server1_Server1_3_Step)でした。 ログファイルの最後の行: OnProgress、Server1、NT Service \ SQLSERVERAGENT、Server1_Server1_Transfer Objects Task、{066BD090-26F3-45D8-AD60-B207D56D44CE}、{1CF7B713-F747-45FB-8936-5522651E0C7A}、5/7/2014 10:08:46 AM、5 / 7/2014 10:08:46 AM、0,0x、1データベースのデータベース転送に失敗しました。OnProgress、Server1、NT Service \ …

3
明示的な主キーがないDB内のすべてのテーブルを見つけるにはどうすればよいですか?
Googleの検索により、クラスター化インデックスなしでテーブルを検索する方法に関する数百万のヒットが発生しました。PKは通常、テーブルのクラスター化インデックスです。ただし、テーブルには、クラスター化インデックスとしての自然キー、およびID列のような非クラスター化代理インデックスを簡単に含めることができます。 主キーが定義されていないDB内のすべてのテーブルを見つけるにはどうすればよいですか?このDBには245のテーブルがあります。手動での検査は非常に非効率的です。

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