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

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

3
sp_WhoIsActive上の「FETCH API_CURSOR0000…」が多数(SQL Server 2008 R2)
変な状況です。これsp_whoisactiveを見ることができる使用: わかりました、このクエリを使用して、何がトリガーされているかを確認できます(この単語は英語で存在しますか?)それ: SELECT c.session_id, c.properties, c.creation_time, c.is_open, t.text FROM sys.dm_exec_cursors (SPID) c --0 for all cursors running CROSS APPLY sys.dm_exec_sql_text (c.sql_handle) t 結果: それは簡単selectです。なぜこれはfを使用しているのetch_cursorですか? また、「空白」のsql_textsもたくさんあります。これはこの「カーソル」に何かありますか? DBCC INPUTBUFFER (spid) これを私に示します: ここに私が作った質問があり ますが、これが同じことかどうかはわかりません。 編集1: kinが提供するクエリを使用すると、次のようになります。 EDIT2: アクティビティモニターを使用して、これを確認できます。 これは最も負荷の高いクエリです(最初のクエリは意図的なものであり、私たちはそれについて知っています)。 繰り返しますが、なぜこれselect * from...が理由なのかを知りたいのFETCH CURSORですが... EDIT3: この " select * from..."は別のサーバーから(経由でlinked server)実行されています。 さて、@ kinが言ったことを理解するのに問題があります。 これはexecution …

1
バックアップファイルにCDCが含まれているかどうかを確認するにはどうすればよいですか?
SQL Server 2008から2014までを使用して、Change Data Capture(CDC)を有効にしてデータベースをバックアップおよび復元する方法を知っていますが、私が探しているのは、フルバックアップファイルをクエリして、CDCデータが含まれているかどうかを確認する方法です。 以下のような方法だろう、何が素晴らしいことだRESTORE FILELISTONLYデータベースからファイルリストを取得しますが、代わりに、リストアがKEEP_CDCフラグを使用する必要がありますかどうかを判断するためにCDCの状態を取得していますか? バックアップにCDCデータが含まれているかどうかを確認する方法はありますか? ありがとう!

3
インデックスをパーティションに配置しないことには利点がありますか?
大規模なパーティションOLAPテーブルを管理する特権があります。この表を確認したところ、インデックスの1つがパーティションスキームと一致していないことに気付きました。著者が利用できず、注意深く作成されたGoogle検索で有用な結果が返されなかったため、これが意図的なものか偶発的なものかはわかりません。 SQL Server 2008でインデックスをパーティションアラインしない理由はありますか?

2
単純なDELETEですが、複雑な実行プラン
この削除を実行すると: DELETE FROM ETLHeaders WHERE ETLHeaderID < 32465870 ... 39,157行を削除します。これは、クラスター化インデックスと主キーであるETLHeaderIDを削除しているため、単純なはずです。しかし、(実行計画によると)361,190行に達し、他のインデックスを使用しているようです。テーブルには、XMLデータ型のフィールドがあります(このDELETEに影響する場合)。 なぜ、どのように私はこのDELETEを高速化できるのでしょうか? 実行計画はこちら:http : //sharetext.org/qwDY テーブルスキーマはこちら:http : //sharetext.org/Vl9j ありがとう

2
クエリから欠落している日付を挿入する
作成したクエリから欠落している日付を挿入するにはどうすればよいですか?以下の結果: Date Frequency 2014-05-18 5 2014-05-20 7 2014-05-25 7 2014-05-27 6 以下に示すように、結果に日付が0の欠落したい場合: Date Frequency 2014-05-18 5 2014-05-19 0 2014-05-20 7 2014-05-21 0 2014-05-22 0 2014-05-23 0 2014-05-24 0 2014-05-25 7 2014-05-26 0 2014-05-27 6 私はサーバーへの読み取り専用アクセスを持っていることに注意してください。

1
mdfおよびldfの空き容量がデータベースの空き容量と一致しません
SSMSで、ファイルサイズに関連するプロパティを確認し、1つのデータベースの詳細を以下に示しました。ここで、値は他のプロパティと一致しません。ここで、mdf、ldf、および合計サイズのサイズは、各ウィンドウの下の他の値と一致します。ただし、追加された場合のmdfおよびldfの使用可能な空き領域は、データベースの縮小ウィンドウに表示される使用可能な空き領域およびデータベースのプロパティに表示される空き領域とは異なります。これは、どのデータベースにも当てはまります。なぜそうなのですか?誰かがこの背後にある論理を説明できますか? データベースのプロパティ: サイズ:91.31 MB 利用可能なスペース:13.40 MB データベースファイルのプロパティ: mdfサイズ:17 MB ldfサイズ:75 MB 縮小データベース: 現在割り当てられているサイズ:91.31 MB 利用可能な空き容量:13.40 MB 縮小ファイルの下-データファイル: 現在割り当てられているサイズ:16.38 MB 利用可能な空き容量:12.63 MB 縮小ファイル-ログファイル用: 現在割り当てられているサイズ :74.94 MB利用可能な空き容量:55.62 MB

2
実行に時間がかかるsp_reset_connectionの考えられる原因は何ですか?
sp_reset_connectionSQL Server Profilerで表示すると、システムストアドプロシージャの実行に数ミリ秒以上かかるのはなぜですか? SQL Serverプロファイラーを使用して運用システムから簡単なトレースを取得し、SqlNexusを使用してそれを分析しました。SqlNexusは、sp_reset_connectionの累積期間が最も長く、トレース全体の33%であることを示しています。観測された期間は0〜7秒(12〜6,833,270マイクロ秒)の範囲ですが、平均は0.956秒です。 プールされた接続が再利用されるときにsp_reset_connectionが呼び出されていることを理解しています。これは無関係なトレースが原因で発生する可能性があるという提案を見ましたが、そうではないようです。 私はsprocが呼び出されたときにサーバーが何をしているかを読みましたが、この場合問題があるとは思いません-コードは、開いたトランザクションやクリーンアップする必要がある巨大な一時テーブルを残していません。 また、https://serverfault.com/questions/199974/sp-reset-connection-taking-a-long-time-to-runも確認しましたが、役に立ちませんでした。 編集(2013-12-23): すべてのケースで、読み取りと書き込みは0で、CPUはほぼ常に0です(ゼロ以外のCPUのインスタンスは2つだけで、どちらも16msです)。

1
SQL Sentry Plan ExplorerはUDFの読み取りをカウントしますか?
次のようなクエリがあります。 select dbo.fn_complexFunction(t.id) from mytable t SQL Sentry Plan Explorerで、クエリプランにUDFを含めるには、SQL SentryでGet Estimated Planを実行する必要があることに気付きました。 「実際のプランを取得」を実行すると、論理読み取りやその他のメトリックにUDFで発生する操作が含まれているように見えません。このような場合、プロファイラーを使用する唯一の回避策はありますか?

1
SQLの最小限のロギング条件
このページhttp://technet.microsoft.com/en-us/library/dd425070(v=sql.100).aspxで行われた要求をテストするためのスクリプトを作成しました。最小限のロギングが行われるか、行われません。 このスクリプトを使用すると、さまざまな種類の挿入ごとのログレコード長の合計は次のようになります。 ヒープが空でタブロックなし60000 タブロック56000でヒープが空 ヒープは空ではなく、タブロックはありません60000 タブロック56000でヒープが空ではない ヒープとインデックスが空でタブロックがない126188 ヒープとタブロック114188で空のインデックス ヒープとインデックスが空ではないタブロックなし138696 タブロック112000でヒープとインデックスが空ではない 空のクラスターがタブロックなしで注文された64168 タブロック56168で空のクラスターを注文 クラスターが空で順序付けられていないタブロックなし73388 タブロック65388でクラスタが空の順序なし クラスターが空ではなくタブロックがない63912 タブロック55944で空でないクラスター クラスターとインデックスが空でタブロックがない124336 クラスターとタブロックで空のインデックス108336 クラスターとインデックスが空ではないタブロックなし123876 タブロック107924でクラスターとインデックスが空ではない これらの数値のいくつかは、technetページの表と一致していないようです。特に: 空のテーブルへの挿入と空でないテーブルへの挿入の間にロギングに違いはないようですが、タブロックなしで非空のクラスターに挿入すると完全なロギングがあるはずですとページは主張します tablockを使用して、indexを使用してヒープまたはクラスターに挿入すると、ロギングが削減されるように見えますが、ページでは完全なロギングが必要であると主張しています。 挿入のSELECT INTOメソッドを使用する場合、fn_dblogには操作が挿入である行はありませんが、ページにはこのメソッドが、表に記載されている動作を持つはずのバルクロード操作としてリストされています。 参考までに、これはSQL Expressデータベースで実行されました。DBCCTRACESTATUS(610)を実行すると、すべてが0です。 なぜ私がこれらの矛盾を目にする可能性があるのか​​を説明するのを手伝ってくれる人はいますか? 参考までに、コードを以下に示します。 SET NOCOUNT ON CREATE TABLE numbers (num INT) CREATE TABLE numbersUnordered (num INT) Declare @cnt int Select @cnt=0 while (@cnt<500) BEGIN …

2
子行の同じセットを持つ親行を見つける
次のような構造があるとします。 レシピ表 RecipeID Name Description RecipeIngredientsテーブル RecipeID IngredientID Quantity UOM 鍵はRecipeIngredientsです(RecipeID, IngredientID)。 重複するレシピを見つけるための良い方法は何ですか?複製レシピとは、各成分の成分と量がまったく同じであると定義されています。 FOR XML PATH成分を1つのカラムに組み合わせるために使用することを考えました。私はこれを完全に調査していませんが、成分/ UOM /数量が同じ順序で並べ替えられていて、適切なセパレーターがあることを確認すれば機能するはずです。より良いアプローチはありますか? 48Kのレシピと200Kの材料の行があります。

2
SQL ServerをクラッシュさせるSQLクエリをトレースする方法
SQL Server 2008データベースサーバーがあります(たまたまMSフェールオーバークラスタリングで実行されていますが、ここでは関係ないと思います)。 私たちのアプリケーションはDBアクセス用にHibernateを実行しており、最近v3.1から3.6にアップグレードして以来、SQL Serverが定期的に(24〜48時間ごとに、場合によってはさらに頻繁に)クラッシュすることを経験しています。 問題の特定の問題は、メモリに関連しているようです。サーバーがクラッシュする直前に(フェイルオーバークラスターマネージャーによって自動再起動されるようです)、次のようなエラーが表示されます。 Error: 701, Severity: 17, State: 130. There is insufficient system memory in resource pool 'internal' to run this query. また、時々(しかし定期的に)のメッセージ Error: 17300, Severity: 16, State: 1. (Params:). The error is printed in terse mode because there was error during formatting. Tracing, ETW, notifications etc …

3
SQL Serverサンドボックス
私はレポート開発者が作業を行うためのサンドボックスをセットアップしようとしています。私の現在の計画は、毎晩データベースを「リセット」することですが、どうすればよいかわかりません。リセットとは、サーバー上の1つのデータベースを除くすべてのユーザーテーブル、ビュー、ストアドプロシージャなどを基本的に削除することです。データベースを削除して再作成することもできると思いますが、適切なADグループ/ユーザーすべてへのアクセスを再度許可することになると思います。 これを実行するための最善の方法は本当にわからないので、あなたの何人かがいくつかの良いアイデア/提案を提供できることを願っています。ありがとう。 :明確にするために、我々は基本的に私達のデータベースでこれをやりたいhttp://try.discourse.org/t/this-site-is-a-sandbox-it-is-reset-every-day/57。唯一の違いは、毎日ユーザーを再現したくないということです。 バージョン: SQL Server 2008 エディション: Developer&Enterprise

2
変更データキャプチャと__ $ update_maskバイナリ
CDCを使用して、プロダクションテーブルに加えられた変更をキャプチャしています。変更された行は、データウェアハウス(informatica)にエクスポートされます。__ $ update_mask列には、更新された列がvarbinary形式で格納されていることを知っています。また、さまざまなCDC関数を使用して、そのマスクからそれらの列が何であるかを確認できることも知っています。 私の質問はこれです。誰かがそのマスクの背後にあるロジックを定義して、倉庫で変更された列を特定できるようにできますか?サーバーの外で処理しているため、これらのMSSQL CDC関数に簡単にアクセスできません。自分でマスクをコードで分解するだけです。SQL側のcdc関数のパフォーマンスは、このソリューションでは問題があります。 要するに、変更された列を__ $ update_maskフィールドから手動で識別したいと思います。 更新: 別の方法として、変更された列の人間が読めるリストを倉庫に送信することも可能でした。これは、元のアプローチよりもはるかに優れたパフォーマンスで実行できることがわかりました。 以下のこの質問に対するCLRの回答は、この代替案を満たし、将来の訪問者のためのマスクの解釈の詳細が含まれています。ただし、XML PATHを使用した受け入れられた答えは、同じ最終結果に対しては最速です。

3
バックアップの復元が失敗する-ファイル「Db」を「{…} .mdf」に復元できません。WITH MOVEを使用して、ファイルの有効な場所を特定します
顧客から受け取ったバックアップファイルに対して復元コマンドを使用して復元しようとすると、次のエラーが発生します。 ディスクからデータベースSFDBを復元= N'C:\ Backup \ Backup.bak ' これを修正するために私が何ができるかについての考えはありますか?それはmdfを探しているので、私が持っているバックアップファイルはフルバックアップではなく増分バックアップであると想定できますか?それが、mdfを探しているのはなぜですか? 1)すべてのデータ(データベース全体)を提供したか、2)適切なデータを持っているか、適切なT-SQLコマンドを使用して復元を実行できるかどうかはわかりません。方法がわかりません。 助けていただければ幸いです。 Msg 5133, Level 16, State 1, Line 2 Directory lookup for the file "D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db.mdf" failed with the operating system error 21(failed to retrieve text for this error. Reason: 15105). Msg 3156, Level 16, State 3, Line 2 …

2
リンクサーバーを参照するポータブルSQLを作成するにはどうすればよいですか?
リンクサーバーを参照するストアドプロシージャを持っています。手順全体のいくつかの場所で、次のようなものが得られます。 INSERT INTO [TableName] (...Columns...) SELECT ...Columns... FROM [ServerName\InstanceName].[Catalogue].[dbo].[TableName] WHERE TableNameID = @TableNameID この手順は、私の開発環境、テスト環境、およびライブ環境に存在します。 問題は、サーバー名が環境ごとに異なるため、プロシージャの各コピーが微妙に異なることです。これにより、スクリプト更新の展開の管理が面倒になります。 各環境で同じバージョンのプロシージャを実行できるように、プロシージャを移植可能にする方法はありますか? そうでない場合、スクリプトの展開を間違い/エラーに陥らなくするために私ができることはありますか?

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