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

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

1
SQL Serverクエリが7 MB /秒を超えるディスクI / Oを使用しないのはなぜですか
IOmeterテストを使用して、200 MB /秒を超えるパフォーマンスを示すSSDを持っています。しかし、ローカルマシンからSQLクエリを実行すると、Windowsリソースモニターに7MB /秒を超えるディスクIOが表示されません。これは、実行に2分以上かかるクエリでも当てはまります。SSDから7MB /秒しか使用していないことがボトルネックになるのは何ですか? 私は走っています: Windows Server 2012スタンダード SQL Server 2008 R2 Intel i7 3820 32GBのRAM sandisk SSD

2
トランザクションログファイルの内容の詳細
トランザクションログ(略してLDFと呼ぶ)の内容について質問があります。完全復旧モデルのデータベースを想定しています。 私は、LDFファイルに(ログ)データベースへのすべての操作(つまり、完全復旧モード)が含まれていることを読みました。ロギング中とどう違うのBEGIN TRAN; COMMAND(s); COMMITですか?どうやらトランザクションはロールバックできますが、標準コマンド(完全復旧モード)はロールバックできないので、私は尋ねています。 トランザクション中にLDFファイルに記録される内容は、通常の完全復旧ロギングの場合とは異なると思います。そうですか?どう違うの?各アクションに「元に戻す」操作が含まれているだけですか? 関連するメモとして、完全復旧LDFファイルを使用して標準クエリを「ロールバック/元に戻す」ための商用ツールがあると聞きました。どうやってやっているの?彼らはLDFの内容を分析し、逆/元に戻す操作を考え出そうとしますか?

1
上位の呼び出しスタックからのDB_IDコンテキスト
SQL ServerではDB_ID、コールスタックの上位からコンテキストからを取得できますか? 私の目標は、開発サンドボックスデータベースに便利な(そして確かにハッキーな)ユーティリティ関数を作成して、短い名前または断片化された名前を与えられたオブジェクトの完全修飾名を簡単かつ簡潔に取得し、さらに同じ短い名前を使用してオブジェクトを削除することです。これらのユーティリティ関数は単一のユーティリティデータベースにありますが、同じサーバー上の他のデータベースから呼び出されます。 私がテストから見ることができるものから: ORIGINAL_DB_NAME()意図したとおり、現在のコンテキスト(によって設定USE [dbname])ではなく、接続文字列にあるものを返します。 関数で呼び出されると、その関数が定義されてDB_NAME()いるデータベースの名前を返します。別の言い方をすると、関数またはストアドプロシージャ内のコンテキストは、それが定義されているデータベースのコンテキストです。 エンジンがコールスタックの上下にある各データベースコンテキストを追跡していることを知っています(証明については以下を参照してください)。この情報にアクセスする方法はありますか? 実行中のコードが同じデータベース内にない場合でも、呼び出し元のデータベースのコンテキストでオブジェクトを検索して操作できるようにしたい。例えば: use SomeDB EXEC util.dbo.frobulate_table 'my_table' 私はできることを知っています EXEC util.dbo.frobulate_table 'SomeDB.dbo.my_table' しかし、この方法でコールスタックをクエリできるかどうかは、私が本当に興味があるだけです。 更新/メモ Gabriel McAdamsのブログからコードを読んでダウンロードしました。これにより、スタックの上下の呼び出しプロシージャIDの記録が提供されますが、すべてが同じデータベースにあると見なされます。 SQL ServerがDBコンテキストのアップとダウンのコールスタックを記憶していることの証明 例:データベースTestDB1とTestDB2を持つ開発サーバー use TestDB1 GO CREATE FUNCTION dbo.ECHO_DB_NAME() RETURNS nvarchar(128) BEGIN RETURN DB_NAME() END GO use TestDB2 GO CREATE PROCEDURE dbo.ECHO_STACK AS BEGIN DECLARE @name nvarchar(128) SET …
11 sql-server 

8
WindowsアカウントでSqlLocalDBインスタンスを開始できません
私は管理者であり、次のコマンドを実行するだけです。 sqllocaldb start v11.0 結果: Start of LocalDB instance "v11.0" failed because of the following error: Error occurred during LocalDB instance startup: SQL Server process failed to sta rt. イベントビューアログイベントID:528 Windows API呼び出しWaitForMultipleObjectsがエラーコードを返しました:575。Windowsシステムエラーメッセージ:{アプリケーションエラー}アプリケーションを正しく開始できませんでした(0x%lx)。[OK]をクリックしてアプリケーションを閉じます。行で報告:3621。 別の(ユーザーと管理者)アカウントを試しましたが、問題はありませんでした。 SQLLocalDB.msiの2012バージョンをアンインストールして再インストールしましたが、うまくいきませんでした。何かアイデアと修正はありますか?

1
関数呼び出しによる推定クエリプランと実際のクエリプラン
SQLサーバーにこのクエリがあります。マージレプリケーションクエリです。 SELECT DISTINCT b.tablenick, b.rowguid, c.generation, sys.fn_MSgeneration_downloadonly ( c.generation, c.tablenick ) FROM #belong b LEFT OUTER JOIN dbo.MSmerge_contents c ON c.tablenick = b.tablenick AND c.rowguid = b.rowguid; 推定クエリプランには、3つのクエリに関する情報が含まれます。 上記のクエリ fn_MSgeneration_downloadonlyへの関数呼び出し fn_MSArticle_has_downloadonly_propertyへの関数呼び出し 実際のクエリプランには、次の情報のみが含まれます。 上記のクエリ 関数については何もありません。実際のプランで機能情報が欠けているのはなぜですか? 私はこれらのオプションを試しました: SET STATISTICS PROFILE ON SET STATISTICS XML ON 実際のプランを作成しましたが、Management Studioで実際のクエリプランオプションを使用したときと同じように、パート2と3が欠落していました。 たとえば、プロファイラーを使用して関数呼び出しに関する情報を取得する場合、どのイベントを選択しますか? クエリプランに特に関連する回答は見つかりませんでしたが、SP:StmtStartingおよびSP:StmtCompletedのプロファイルを作成したところ、関数呼び出しが表示されました。

1
SQL ServerのキャッシュフラッシュとディスクI / O
.NET 4.0で開発したOLTPシステムの負荷テストに忙しく、SQL Server 2008 R2を背後で実行しています。システムはSQL Server Service Brokerキューを使用します。これは非常にパフォーマンスが高いキューですが、処理中に独特の傾向が発生しています。 SQL Serverは、1分の猛烈な速度で要求を処理し、その後、約20秒のディスク書き込みアクティビティが増加します。次のグラフは問題を示しています。 Yellow = Transactions per second Blue = Total CPU usage Red = Sqlsrv Disk Write Bytes/s Green = Sqlsrv Disk Read Bytes/s トラブルシューティング中に、パターンに大きな変更を加えることなく次のことを試みました。 SQL Serverエージェントを停止しました。 実行中の他のほぼすべてのプロセスを強制終了(A / V、SSMS、VS、Windowsエクスプローラーなど) 他のすべてのデータベースを削除しました。 すべての会話タイマーを無効にしました(トリガーは使用しません)。 メッセージキュー主導のアプローチから、シンプル/粗いテーブルモニタリングデザインに移行しました。 軽いものから重いものまで、さまざまな負荷を使用しました。 すべてのデッドロックを修正しました。 SQL Serverがキャッシュを構築し、特定の時間ベースの間隔でディスクに書き込んでいるように見えますが、この理論をサポートするオンラインのものが見つかりません。 次に、ソリューションを専用のテスト環境に移動して、問題を再現できるかどうかを確認します。暫定的な支援をいただければ幸いです。 Update 1 要求に応じて、チェックポイントページ/秒、ページの平均寿命、およびいくつかのディスク遅延カウンターを含むグラフがここにあります。 チェックポイント(水色の線)が、パフォーマンスの低下(黄色の線)の原因であるように見えます。^ …

2
SQL ServerメモリとSQL Server Analysis Servicesメモリのバランスをとる方法
同じ構成のシステムが多数あります 1つのサーバー(仮想または物理) SQL Server(SQL)およびSQL Server Analysis Server(AS)の実行 マルチコア 16GB RAM SQL Serverは毎晩約2〜3時間の処理を実行し、その後 2〜3時間のAS処理を実行します。次に、終日ASのみが照会されます。 これが専用サーバーであり、他のアプリが問題ではなく、2つの処理セットが完全に同期している-常に次々と重複しない-とすれば、SQLおよびASサーバーのメモリ制限を最適に設定するにはどうすればよいですか。 質問の理由は、SQLの制限を設定しないと、可能なすべてのメモリを取得するからです。ただし、私の理解では、SQLは次の場合にこのメモリを喜んで放棄します。 それを使用していないと 別のサービス/プログラムが要求します。 したがって、論理的な観点からは、SQLに必要なだけの量を割り当てることができると思いますが、ASについてはよくわかりませんTotalMemoryLimit。ASがメモリを放棄するかどうかはわかりません。実際、もっと多くを読むと、それをすべて取り入れることは間違っていると私は信じるようになります。 これは実際に両方に制限を設定する必要があることを意味しますか?ベストプラクティスとは何か、プロセスが重複しないことを考慮して測定する必要があるものについて、私は混乱しています。 これが理にかなっているといいのですが。

2
SQL Serverバックアップが失敗しました。エラー:3041、重大度:16、状態:1
まず、私はstackexchangeに非常に慣れていないので、ご容赦ください。 SQL Server 9.0.4060を実行しています。 私の問題は、SQL Serverのバックアップが多くのデータベースで失敗し続けることです。 メンテナンスプランは、さまざまなバックアップジョブに対して実行されます。 DIFFバックアップは毎日20:30に、フルバックアップは毎週日曜日の20:30に。 バックアップを完了できないデータベースごとに次の2つのエラーが発生します。 Date 06-11-2012 20:31:06 Log SQL Server (Current - 07-11-2012 11:43:00) Source Backup Message BACKUP failed to complete the command BACKUP DATABASE (dbname) WITH DIFFERENTIAL. Check the backup application log for detailed messages. Date 06-11-2012 20:31:06 Log SQL Server (Current - 07-11-2012 …

1
SQL Serverスナップショットレプリケーションは毎回完全にデータをコピーしますか、それともデルタを発行しますか?
2つのサーバー間のスナップショットレプリケーションを見ています。これが私が持っているものです: 500GBデータベース 〜500MBの毎晩のbcpロード 〜50MBの毎日のトランザクション 使用するレプリケーションの種類について、社内の他のDBAに尋ねていました。スナップショットレプリケーションを使用するように言われました。ただし、私が理解して読んでいることから、ロード後の毎晩、スナップショットはデータベースをディストリビューターに完全にコピーし、他のサーバーを完全に上書きします。 スナップショットはデルタで機能しますか、それとも毎回完全なコピーですか?

3
SQL Server 2008の日時インデックスのパフォーマンスのバグ
SQL Server 2008 R2を使用しており、プライマリIDインデックスを持つ非常に大きな(1億行以上)テーブルdatetimeと、非クラスター化インデックスを持つ列があります。私たちは、の使用に基づいていくつかの非常に珍しいクライアント/サーバーの動作を見ているorder by句を、具体的には、インデックス付きのdatetime列。 私は次の投稿を読みました:https : //stackoverflow.com/questions/1716798/sql-server-2008-ordering-by-datetime-is-too-slow しかし、クライアント/サーバーでは、現在よりも多くのことが進行中ですここで説明を開始します。 次のクエリを実行すると(一部のコンテンツを保護するために編集されます): select * from [big table] where serial_number = [some number] order by test_date desc クエリは毎回タイムアウトします。SQL Serverプロファイラーでは、サーバーに対して実行されたクエリは次のようになります。 exec sp_cursorprepexec @p1 output,@p2 output,NULL,N'select * ..... 次に、クエリを次のように変更した場合、 declare @temp int; select * from [big table] where serial_number = [some number] order by test_date …

2
SQL Server 2012可用性グループは「常にオン」ですか?
従来のSQL Serverクラスターでは、フェールオーバーが発生すると、SQL Serverの障害が発生したインスタンスに接続されているすべてのクライアントは接続を失い、各クライアントはフェールオーバークラスターインスタンスへの新しい接続を再確立する必要があります。 AlwaysON可用性グループはこの問題を軽減しますか?SQL Server 2012 AlwaysON可用性グループの場合のフェイルオーバーは、SQL Serverに接続するクライアントに対して透過的ですか?

2
公開された複製DBのDB互換性レベルを90から100に変更した場合の影響
現在、互換性レベル90(2005)で動作している一連の公開データベースを備えたSQL Server 2008 R2サーバーがあります。 サブスクリプションデータベースもSQL Server 2008 R2ですが、宛先データベースは互換性レベル100に設定されており、レプリケーションは正常に機能しています。 パブリッシュされたデータベースの互換性レベルを変更した場合、レプリケーションに何らかの影響がありますか、それともすべてのサブスクリプションを再初期化してレプリケーションを再開した場合だけでしょうか? パブリッシュされたデータベースの互換性レベルを変更すると、レプリケーションストアドプロシージャの機能が少し変わる可能性があると思いますが、100%確実ではありません。 これは事実ですか?

1
解放されないIOCPリスナー
「Non-yielding IOCP Listener」が何を示しているか誰か知っていますか? 私たちのSQL Serverにはバグチェックダンプがありました。 ===================================================================== BugCheck Dump ===================================================================== This file is generated by Microsoft SQL Server version 9.00.5292.00 upon detection of fatal unexpected error. Please return this file, the query or program that produced the bugcheck, the database and the error log, and any other pertinent information with a …


1
最小限のダウンタイムで大量のデータを再インポートする最良の方法
週に1回(3つのint / bigint列のみ)のIPルックアップ(読み取り専用参照)データを含む約500,000件のレコードをインポートする必要があります。 データを既存のテーブルとマージすることについて心配したくないので、古いものをクリアして再インポートしたいと思います。 理想的には、データに対して実行されるクエリは引き続き実行されます(これらのクエリの多くは取得されず、インポートの実行中は少し遅く実行することは許容されますが、24時間年中無休で実行する必要があるため、これを実行します)時間外」はオプションではありません)。 これまでに試したこと SSIS:テーブルを切り捨ててインポートするSSISパッケージを作成しました-実行に約30秒かかります(実際には長すぎます)。 一時テーブル:一時テーブルへのインポート、切り捨て、および全体のコピーにも、約30秒かかります。 BCP:一括インポートもかなり遅い(何らかの理由で、SSISよりも遅い(インデックスを維持する必要がない場合でも))-char-> int / bigintトランザクションと関係があると思います:/ ミラーテーブル?したがって、現時点では、ビューを介してテーブルを読み取り、ミラーテーブルにデータをインポートし、このテーブルを指すようにビューを変更することについて疑問に思っています。ちょっとハッキー。 これは一般的な問題のように思われますが、推奨される方法を見つけることができません。 ありがとう

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