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

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


4
テーブルのすべての列を含む主キーの利点はありますか?
4つの列がすべてNULL不可のテーブルがあり、一意のレコードを区別するには4つすべてが必要なデータです。これは、主キーを作成する場合、すべての列を構成する必要があることを意味します。テーブルに対するクエリは、ほとんどの場合、単一のレコードをプルバックします。つまり、クエリですべての列がフィルタリングされます。 すべての列を検索する必要があるため、主キーを持つことは(レコードの一意性を強制することに加えて)まったく私に利益をもたらしますか?

3
サブクエリを使用した大きなテーブルでの更新が遅い
でSourceTable> 15MMレコードとなるBad_Phrase> 3Kの記録を持つ、次のクエリは、SQL Server 2005のSP4上で実行するために、ほぼ10時間かかります。 UPDATE [SourceTable] SET Bad_Count= ( SELECT COUNT(*) FROM Bad_Phrase WHERE [SourceTable].Name like '%'+Bad_Phrase.PHRASE+'%' ) 英語では、このクエリは、フィールドのサブているBad_Phraseに記載されている明確なフレーズの数カウントしているName中でSourceTable、その後のフィールドにその結果を置くことをBad_Count。 このクエリを非常に高速に実行する方法についての提案をお願いします。

1
ASYNC_NETWORK_IO待機タイプは心配することはありますか?
実行に長い時間がかかるストアドプロシージャのリストを見ると、待機時間が最も多いことが際立っています。ただし、その待機時間のほとんど(81%)はASYNC_NETWORK_IOであり、その理由はわかっています。ストアドプロシージャは約400 MBの情報を転送します。 ドキュメントでは、ASYNC_NETWORK_IOの原因は、クライアントがデータのフラッドに追いつくことができないことであり、それはおそらく真実であると述べています。クライアントがADO.NET経由でストアドプロシージャを呼び出してからデータセットを処理するだけなので、クライアントを維持する方法がわかりません。 したがって、この情報が与えられた場合、この手順のASYNC_NETWORK_IO待機タイプについて心配する必要がありますか?実際にサーバーのパフォーマンスに影響しますか? 追加情報: SQL Server 2005のサービスパック2を使用しています。 クライアントアプリは、SQL Serverと同じボックス上にあります(私は知っています...知っていますが、それについては何もできません)。

4
SQLスクリプトの実行を中断する方法
私はSQLスクリプトに取り組んでおり、いくつかの条件が満たされない場合、スクリプトの継続を停止する必要があります。 GoogleでGoogleを検索したところ、重大度が20のRaisErrorが終了することがわかりました。しかし、いくつかの理由で、私はそのオプションを使用できません。 SQLスクリプトの実行を停止する可能な代替手段を教えてください。

2
無期限のWAITFORを起動すると、ログファイルのサイズが増加しますか?
アプリの前回のリリースでは、Service Brokerキューに何かが到着したときに待機するように指示するコマンドを追加しました。 WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM MyQueue) DBAは、追加以来、ログサイズが屋根を通過したことを教えてくれました。これは正しいですか?それとも私は他の場所を探すべきですか?

1
RECOMPILEクエリヒントを使用する場合のクエリ間の実行時間の著しい違い
同じSQL Server 2005インスタンスで2つのほぼ同一のクエリを実行しています。 最初のSELECTクエリは、LINQによって生成された元のクエリです(私は知っています、私は知っています...私はアプリケーション開発者ではなく、DBAです:)。 2番目のものは最初のものとまったく同じOPTION (RECOMPILE)で、最後にaが追加されています。 他に変更はありません。 最初のものは、実行のたびに55秒かかります。 2番目は2秒かかります。 両方の結果セットは同じです。 このヒントがパフォーマンスの劇的な向上をもたらすのはなぜですか? Books OnlineのエントリにRECOMPILEは、あまり詳細な説明はありません。 クエリの実行後にクエリに対して生成されたプランを破棄するようにSQL Serverデータベースエンジンに指示し、同じクエリが次に実行されるときにクエリオプティマイザにクエリプランを再コンパイルさせます。RECOMPILEを指定しないと、データベースエンジンはクエリプランをキャッシュし、それらを再利用します。クエリプランをコンパイルするとき、RECOMPILEクエリヒントは、クエリ内のローカル変数の現在の値を使用し、クエリがストアドプロシージャ内にある場合、現在の値をパラメータに渡します。 RECOMPILEは、ストアドプロシージャ全体ではなく、ストアドプロシージャ内のクエリのサブセットのみを再コンパイルする必要がある場合に、WITH RECOMPILE句を使用するストアドプロシージャを作成するための便利な代替手段です。詳細については、「ストアドプロシージャの再コンパイル」を参照してください。RECOMPILEは、プランガイドを作成するときにも役立ちます。詳細については、「プランガイドを使用したデプロイ済みアプリケーションでのクエリの最適化」を参照してください。 クエリには多くのローカル変数があるため、OPTION (RECOMPILE)クエリヒントを使用すると、SQL Serverは(真剣に)最適化できると推測されます。 私が見ているところはどこでも、それOPTION (RECOMPILE)は避けるべきだと言っている。この説明は、一般に、このヒントを使用すると、SQL Serverはこの実行計画を再利用できないため、毎回再コンパイルする時間を無駄にする必要があるというものです。(しかし)パフォーマンスが非常に優れていることを考えると、今回はこのクエリヒントを使用するのは良いことだと思います。 使用すべきですか?そうでない場合、このヒントとアプリケーションを変更せずに、SQL Serverにより良い実行計画を使用させることができますか?

2
動的SQLを使用して指定されたデータベースにビューを作成しますか?
別のデータベースにビューをドロップして作成するための動的SQLを作成しています。 だから私は書いた: set @CreateViewStatement = ' USE ['+ @DB +']; CREATE VIEW [dbo].[MyTable] AS SELECT ........something exec (@CreateViewStatement) それは私にエラーを与えます: 「CREATE VIEW」は、クエリバッチの最初のステートメントである必要があります。 USE DATABASEステートメントを削除すると正常に機能しますが、データベースは指定されなくなります。 この問題を解決するにはどうすればよいですか?

4
SQL Server 2005/2008 UTF-8照合/文字セット
私はセットに直接オプション(複数可)を見つけることができませんUTF-8rellated Collations/Charsetsと同じで、他のSQLエンジンに設定することも可能ですが、SQL Serverの2005/2008はそこだけでラテン語とSQL照合順序は、SQL Serverの2005/2008に。 これらの照合/文字セットをSQL Serverエンジン(両方のバージョン)2005/2008 Win2008 OSで強制/インストールするオプションはありますか

1
DBCC CheckDBはどのような種類の破損を見逃すことができますか?
この質問は、この以前の投稿と、次のように復元された将来の調査のためにデータベースを提出したことによって促されました。 BACKUP 'BrokenDatabase' detected an error on page (1:123456) in file ’BrokenDatabase.mdf'. Error: 3043, Severity: 16, State: 1. リンクされた質問とDBCC PAGE調査の準備ができているバックアップでは、DBCC CHECKDBはエラーなしで合格しましたが、破損が明らかに存在します。 CHECKDBはパスするがBACKUP WITH CHECKSUMは失敗することにより、どのような種類の破損が発生する可能性がありますか?

1
非クラスター化インデックスにクラスター化インデックス列を含める必要がありますか?
非クラスター化インデックスはクラスター化インデックスに基づいていることを考慮すると、非クラスター化インデックスには、クラスター化インデックスに含まれる列のいずれかをリストする必要がありますか? 言い換えると、ProductsテーブルにProductIDのクラスター化インデックスが含まれている場合、ProductID列を含めることが望ましい非クラスター化インデックスを作成するときに、列として追加する必要がありますか? そうでない場合、非クラスター化インデックスに列名を追加するとよいシナリオはありますか?


2
SQL Serverに割り当てられるRAMの量を簡単に確認しますか?
SQL Server 2005では、タスクマネージャーを確認し、少なくともSQL Serverに割り当てられているメモリ量を大まかに確認できます。 SQL Server 2008では、SQLServer:Memory Manager / Total Server Memory(KB)perfカウンターが16,732,760を示していても、ワーキングセットまたはコミットサイズが実際に500 MBを超えることはありません。 タスクマネージャで実際にサーバーメモリを表示する設定はありますか?または、SQL Serverでメモリの使用方法を変更した結果ですか


2
フラグの配列(ビットマップ/ビット配列)を格納するためのデータ型
テーブルの各レコードにビット配列を保存し、次の操作をサポートする必要があります。 ビットが設定されているかどうかのテスト、およびビットの設定(SQLを使用) ADO 2.8(ADO.NETではない)を使用した値のクエリと設定 インデックス作成(「カバーインデックス」機能を活用するため) この配列に格納されるビットの最大数は固定されていますが、32を超える場合があります。つまり、単純なint列は常に機能するとは限りません。 これまで見てきたことから、私のオプションは次のとおりです。 複数のint列を使用する bigintを使用します(ビット数が64以下である限り機能します) バイナリを使用 ? 最初のオプションは機能しますが、データにアクセスするコードにかなりのリファクタリングが必要です。2番目のオプションは一時的な救済であり、これまでの検索では、ADOがbigintでうまく機能するかどうかはあまりわかりません。binaryの経験がなく、他のオプションを認識していません。 要件を考慮して、どのデータ型を選択しますか?

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