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

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

2
XMLリーダーを使用した計画の最適化
ここからクエリを実行して、デフォルトの拡張イベントセッションからデッドロックイベントを引き出します。 SELECT CAST ( REPLACE ( REPLACE ( XEventData.XEvent.value ('(data/value)[1]', 'varchar(max)'), '<victim-list>', '<deadlock><victim-list>'), '<process-list>', '</victim-list><process-list>') AS XML) AS DeadlockGraph FROM (SELECT CAST (target_data AS XML) AS TargetData FROM sys.dm_xe_session_targets st JOIN sys.dm_xe_sessions s ON s.address = st.event_session_address WHERE [name] = 'system_health') AS Data CROSS APPLY TargetData.nodes ('//RingBufferTarget/event') AS XEventData (XEvent) …

3
包含データベースには欠点がありますか?
SQL Server 2012は、データベースに必要なすべて(ほとんどすべて)がデータベース自体に含まれる「包含」データベースの概念を導入しました。これは、サーバー間でデータベースを移動するときに大きな利点を提供します。新しいデータベースを設計するとき、これが私のデフォルトの戦略であるかどうかを知りたいと思います。 MSDNには、包含データベースのいくつかの欠点がリストされており、大きな欠点は、変更の追跡とレプリケーションのサポートが不足していることです。他にありますか?これらの機能を使用しない場合、包含データベースを使用しない理由はありますか?

1
XMLインデックスを使用した非常に奇妙なパフォーマンス
私の質問はこれに基づいています:https : //stackoverflow.com/q/35575990/5089204 そこで答えを出すために、次のテストシナリオを行いました。 テストシナリオ 最初にテストテーブルを作成し、100.000行を入力します。乱数(0から1000)は、乱数ごとに最大100行になるはずです。この番号はvarchar colに入れられ、XMLの値として使用されます。 次に、OPのような呼び出しを行います。.exist()および.nodes()を使用して、2番目の利点はわずかですが、両方とも5〜6秒かかります。実際に、呼び出しを2回行います。2回目はスワップされた順序で、検索パラメーターをわずかに変更し、フルパスではなく「// item」を使用して、キャッシュされた結果またはプランによる誤検知を回避します。 次に、XMLインデックスを作成し、同じ呼び出しを行います 今-本当に驚いたことは何ですか!- .nodesとの完全なパスがはるかに遅い(9秒)前よりもなく.exist()して、半秒までであるフルパスもダウン約0.10秒です。(一方.nodes()、短いパスの方が優れていますが、それでもはるかに遅れています.exist()) 質問: 私自身のテストをまとめると、XMLインデックスはデータベースを極端に破壊する可能性があります。それらは物事を非常に高速化できますが(s。edit 2)、クエリも遅くなります。それらがどのように機能するかを理解したいのですが... XMLインデックスを作成する必要があるのはいつですか?.nodes()インデックスを使用すると、インデックスを使用しない場合よりも悪くなるのはなぜですか?否定的な影響をどのように回避できますか? CREATE TABLE #testTbl(ID INT IDENTITY PRIMARY KEY, SomeData VARCHAR(100),XmlColumn XML); GO DECLARE @RndNumber VARCHAR(100)=(SELECT CAST(CAST(RAND()*1000 AS INT) AS VARCHAR(100))); INSERT INTO #testTbl VALUES('Data_' + @RndNumber, '<error application="application" host="host" type="exception" message="message" > <serverVariables> <item name="name1"> …

2
SQL Server 2012で空の結果セットでクエリエラーが発生するのはなぜですか?
MS SQL Server 2012で次のクエリを実行すると、2番目のクエリは失敗しますが、最初のクエリは失敗しません。また、where句なしで実行すると、両方のクエリが失敗します。両方が空の結果セットを持つ必要があるため、どちらが失敗するのか、私は途方に暮れています。どんな助け/洞察も大歓迎です。 create table #temp (id int primary key) create table #temp2 (id int) select 1/0 from #temp where id = 1 select 1/0 from #temp2 where id = 1

3
クライアントごとに1つのデータベースがどの時点で実行不可能になりますか?
私たちのシステムの1つでは、クライアントの機密データがあり、各クライアントのデータを個別のデータベースに保存します。そのシステムには約10〜15のクライアントがあります。 ただし、50〜100のクライアント、またはそれ以上のクライアントを持つ新しいシステムを開発しています。この例では、クライアントごとに1つのデータベースを持つことは(機密レコードと監査履歴を格納するために)実行不可能だと考えています。ただし、これが完全に正常かどうか、またはセキュリティを維持する別の方法があるかどうかはわかりません。 これについて何か考えはありますか?

1
SQL Server Management Studio 2012をアンインストールする方法は?[閉まっている]
SQL Server Management Studio 2012をアンインストールする方法は? ControlPanelの「プログラムのアンインストールまたは変更」(Windows 7 Profの場合)には次のエントリが表示されます。 一方、インターネットの検索結果は常に言う:「のMicrosoft SQL Server 2005をクリックし、[変更]をクリックします」 更新(ショーンメルトンのコメントをコメント): "" "Microsoft SQL Server 2012(64-bit)"-> Uninstall / Changeを選択すると、次のことがわかります。 [削除]、[サポートルールのセットアップ]を選択した後、SSMSまたは継続オプションなしで:

3
合理的なバッファプールサイズを評価する決定論的な方法は何ですか?
私はmax server memory (mb)設定が適切かどうかを理解するための健全な方法を考え出そうとしています(どちらか低いか高いか、そのままの状態を維持する必要があります)。max server memory (mb)オペレーティングシステムなどのためのスペースを確保するために、常に十分に低くする必要があることを認識しています 私が見ている環境には数百のサーバーがあります。RAMは各サーバーに割り当てられたGBごとにコストがかかるため、バッファープールの現在のサイズが適切かどうかを判断するために使用できる信頼できる式が必要です。環境全体が仮想化され、VMに割り当てられた「物理」RAMは簡単に上下に変更できます。 現在見ている特定のSQL Serverインスタンスには、1,100,052秒のPLEがあります。これは、12.7日(サーバーが稼働している時間)に相当します。サーバーの最大サーバーメモリ設定は2560MB(2.5GB)で、そのうち1380MB(1.3GB)のみが実際にコミットされます。 Jonathan Keheyias(投稿)によるものとPaul Randal(投稿)によるもの、および他のいくつかを含むいくつかの項目を読みました。ジョナサンは、4GBのバッファプールあたり 300未満のPLEの監視が低すぎると主張しています。上記のSQL Serverインスタンス300 * (2.5 / 4) = 187では、ターゲットPLEが300未満の非常に低いターゲットPLEになります。このインスタンスは290GBのSQL Serverデータ(ログファイルを含まない)を持ち、統合テストにのみ使用されます。過去12日間がこのサーバーの典型的な使用法を代表していると仮定すると、max server memory (mb)設定を下げることができると思います。 スケールのもう一方の端には、294のPLEを持つ別の統合テストサーバーがあり、そのサーバーのmax server memory (mb)設定は1 GBのみです。このサーバーには、ログを含まないSQL Serverデータが224MBしかなく、一部のBizFlowデータベースが実行されています。このサーバーは、より高いmax server memory (mb)設定の恩恵を受ける可能性があります。 あまりにも多くのメモリが割り当てられている可能性のあるターゲットの良い出発点は、次のものを見ることです。 SELECT RamMB = physical_memory_in_bytes / 1048576 , BufferPoolCommittedMB = bpool_committed * 8192E0 / 1048576 , …

19
SQL Server Management Studioが新しいウィンドウをゆっくり開く
SQL ServerとManagement Studioの両方を2008から2012にアップグレードした後、新しいクエリウィンドウとダイアログボックスを開くとManagement Studio 2012が非常に遅くなります。 テーブルを右クリックしても遅くなります。通常、ウィンドウ内で何かを始める前に、少なくとも5秒の遅延があります。同じウィンドウを連続して2回開いても、これは毎回発生します。なぜこれが起こり、どうすれば修正できますか? 他のアプリケーションは、データベースへの接続を非常に高速に確立します。 私が試したものは助けにはなりませんでした: hostsファイルを変更する必要があるGoogleでのヒット SSMS「ユーザー定義設定」のリセット ビデオドライバの更新、ハードウェアアクセラレーションの無効化、DirectXの無効化 生体認証サービスを無効にします(インストールしていません)。 私のコンピューターは十分に高速でなければならず、16GBのRAMもあります。私のハードウェアは間違いなく問題ではないはずです。SSMSが何かを待っているようです-これが起こっている間、私は他のプログラムをスムーズに操作できます。 SQL Server 2012 CU1更新プログラムをインストールする機会はありません。修正プログラムのインストールでエラーが発生するリスクがあるようで、現時点ではリスクを負うことができません。

2
ブロックされたプロセスレポートの空のブロックプロセス
拡張イベントを使用してブロックされたプロセスのレポートを収集していますが、何らかの理由で一部のレポートでblocking-processノードが空です。これは完全なxmlです。 <blocked-process-report monitorLoop="383674"> <blocked-process> <process id="processa7bd5b868" taskpriority="0" logused="106108620" waitresource="KEY: 6:72057613454278656 (8a2f7bc2cd41)" waittime="25343" ownerId="1051989016" transactionname="user_transaction" lasttranstarted="2017-03-20T09:30:38.657" XDES="0x21f382d9c8" lockMode="X" schedulerid="7" kpid="15316" status="suspended" spid="252" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2017-03-20T09:39:15.853" lastbatchcompleted="2017-03-20T09:39:15.850" lastattention="1900-01-01T00:00:00.850" clientapp="Microsoft Dynamics AX" hostname="***" hostpid="1348" loginname="***" isolationlevel="read committed (2)" xactid="1051989016" currentdb="6" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056"> <executionStack> <frame line="1" stmtstart="40" sqlhandle="0x02000000f7def225b0edaecd8744b453ce09bdcff9b291f50000000000000000000000000000000000000000" /> <frame line="1" …

4
ユーザーがSQL Serverデータベースに存在するかどうかを確認します
SQL Server 2012を使用しています。ユーザーをデータベースに追加する前に、ユーザーが存在するかどうかを確認したいと思います。 これは私がテストしたものです: USE [MyDatabase] GO IF NOT EXISTS (SELECT name FROM [sys].[server_principals] WHERE name = N'IIS APPPOOL\MyWebApi AppPool') Begin CREATE USER [IIS APPPOOL\MyWebApi AppPool] FOR LOGIN [IIS APPPOOL\MyWebApi AppPool] WITH DEFAULT_SCHEMA=[dbo] end ALTER ROLE [db_owner] ADD MEMBER [IIS APPPOOL\MyWebApi AppPool] GO ただし、SELECT name FROM [sys].[server_principals]そのユーザーがに存在する場合、このコードは戻りませんMyDatabase。 ユーザーが存在するMyDatabaseかどうかを確認するにはどうすればよいですか

4
あるサーバーから別のサーバーに(数百の)テーブルをコピーする(SSMSを使用)
1つのサーバーから別のサーバーにコピーする必要があるテーブルは数百(現在は466ですが、増え続けています)です。 私はこれをする必要がなかったので、どのようにアプローチするのか全くわかりません。すべてのテーブルは同じ形式です。Cart<Eight character customer number> これは、これらすべてのCart<Number>テーブルを1つのCartsテーブルにマージするより大きなプロジェクトの一部ですが、それはまったく別の質問です。 これらのすべてのテーブルをコピーするために使用できるベストプラクティスの方法はありますか?両方のサーバーのデータベース名は、それが役立つ場合は同じです。先ほど言ったように、saAからBにデータを取得するために必要なことは何でもできるようにアカウントを持っています。両方のサーバーも同じサーバーファームにあります。

2
多数の行を挿入する最速の方法は何ですか?
私はデータベースをステージングテーブルにロードします。このステージングテーブルから、外部キーを解決するために1-2回結合し、この行を最終テーブル(月ごとに1つのパーティションがある)に挿入します。3か月分のデータで約34億行あります。 これらの行をファイナルテーブルにステージングする最速の方法は何ですか?SSISデータフロータスク(ビューをソースとして使用し、高速ロードがアクティブになっている)またはInsert INTO SELECT ....コマンド?データフロータスクを試してみましたが、約5時間で約10億行(サーバー上の8コア/ 192 GB RAM)を得ることができ、非常に遅いと感じました。

1
クエリがtempdbへの流出を引き起こすのはなぜですか?
バックグラウンド 私は、48 GB RAMを搭載したWin 2008サーバー上のMSSQL 2008(標準)から、64 GB RAMを搭載したWindows 2012上のMSSQL 2012(64ビットWebエディション)を実行する新しいサーバーに160 GBデータベースを移行しています。古いサーバーは稼働しており、負荷がかかっています。新しいサーバーは運用されていません。新しいサーバーには、8つのtempdbファイル(各4GB)があります。 問題 新しいサーバーでのテストでは、多数のクエリで「実行中にデータをスピルするためにtempdbを使用した演算子」という警告が表示されることがわかりました。いくつかのクエリを書き直すことでソートを回避できましたが、これは実際には問題に対処していません。古いサーバーで同じクエリを実行しても、流出は発生しません。MSSQLがメモリ内の操作を完了できず、tempdbにスピル/ページングする必要がある場合、スピルが発生することを読みました。流出を心配する必要がありますか? 例 データベースでsp_updatestatsを実行したため、統計は最新である必要がありますが、推定行数と実際の行数にいくつかの相違があることに注意してください。 メモリの懸念 64 GBの58のMSSQLの最大メモリ設定を設定しました。現在、MSSQLはこのメモリを約35GB消費していますが、ワーキングセットはわずか682MBです。古いサーバー(本番環境ではありますが、負荷を処理します)には、44gbのメモリがMSSQLにコミットされており、そのうち43.5gbがワーキングセットに含まれています。 こぼれがメモリ設定に関連している可能性があるかどうかはわかりません-誰にもアイデアがありますか?現在、MSSQLにはエーカーのRAMがありますが、なぜある種の並べ替えやハッシュの一致のためにtempdbにこぼれるのですか?

6
暗号化されたビューまたはストアドプロシージャを表示する方法
サードパーティのデータベースに取り組んでいます。 右クリックしてビューの定義を表示しようとするCREATE TOとNEW QUERY EDIT WINDOW、エラーが発生します: このオブジェクトにはこのプロパティが存在しないか、アクセス権が不十分なために取得できない可能性があります。テキストは暗号化されます。

2
ストアドプロシージャのプロファイル方法
私はSQL Server 2012を使用していますが、ストアドプロシージャをプロファイルする方法を疑問に思っていました たとえば、プロファイラーは、ストアドプロシージャ内の個々のSQLステートメントをキャプチャできますか? マージレプリケーションストアドプロシージャを診断しようとしていますが、これはマージエージェントの完全な実行の一部としてキャプチャする必要があります。パフォーマンスの問題が発生したストアドプロシージャを取得して再度実行することは、その時点では遅くないため不可能と思われます。

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