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

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

1
MS SQL Serverの日付タイプについて
以下を検討してください。 declare @dt datetime, @dt2 datetime2, @d date set @dt = '2013-01-01' set @dt2 = '2013-01-01' set @d = '2013-01-01' select convert(varbinary, @dt) as dt, convert(varbinary, @dt2) as dt2, convert(varbinary, @d) as d 出力: dt dt2 d ------------------ -------------------- -------- 0x0000A13900000000 0x07000000000094360B 0x94360B 今、私はすでにから理解ドキュメントdatetime小さい範囲を持っており、1753年1月1日から開始し、しばらくdatetime2してdateその開始日として0001-01-01を使用しています。 私も理解していない何か、ということですdatetimeが表示されますが、リトルエンディアンしばらくするdatetime2と、dateビッグエンディアンです。その場合、どうすれば適切に並べ替えることができますか? dateタイプによって表される整数の日数を知りたいかどうかを検討してください。あなたはこれを行うことができると思います: declare @d date set …

2
SQL ServerがWindowsイベントビューアに配置するものの数を減らす方法は?
自動化された単体テストの一環として、多くのデータベースが作成、セットアップされ、削除されます。問題は、これが発生するたびに、WindowsイベントビューアでSQL Serverから大量のレコードを取得することです。メッセージは主に「起動中」、「データベースオプションの設定」、「インデックスが復元されました」のようなものです。 SQL Serverの構成を変更して、これらの些細な「情報」レベルのイベントをイベントログに記録しないようにする方法はありますか。ログがいっぱいになるため、有用な情報を見つけるのが非常に難しくなります。

2
JOINを使用してテーブルを効率的に更新する
世帯の詳細が記載されたテーブルと、その世帯に関連するすべての人物の詳細が記載されたテーブルがあります。世帯テーブルには、2つの列を使用して定義された主キーがあります- [tempId,n]。personテーブルには、3つの列を使用して定義された主キーがあります。[tempId,n,sporder] 主キーのクラスター化インデックスによって指示された並べ替えを使用して、各世帯[HHID]および各人の[PERID]レコードに一意のIDを生成しました(以下のスニペットはPERIDを生成するためのものです): ALTER TABLE dbo.persons ADD PERID INT IDENTITY CONSTRAINT [UQ dbo.persons HHID] UNIQUE; 今、私の次のステップは、各人を対応する世帯に関連付けることです。マップ[PERID]には[HHID]。2つのテーブル間の横断歩道は、2つの列に基づいています[tempId,n]。このため、次の内部結合ステートメントがあります。 UPDATE t1 SET t1.HHID = t2.HHID FROM dbo.persons AS t1 INNER JOIN dbo.households AS t2 ON t1.tempId = t2.tempId AND t1.n = t2.n; 私は合計で1928783世帯の記録と5239842人の記録を持っています。現在、実行時間は非常に長くなっています。 さて、私の質問: このクエリをさらに最適化することは可能ですか?より一般的には、結合クエリを最適化するための経験則は何ですか? より良い実行時間で私が望む結果を達成できる別のクエリ構造はありますか? 私がしている実行計画アップロード SQLPerformance.comに全体のスクリプトは、SQL Server 2008によって生成されたが

1
XML列のINおよびNOT IN
xml列を持つテーブルがあります。Xmlは <Root> <Row> <user>abc</user> <Rowid>1</Rowid> </Row> <Row> <user>vf</user> <Rowid>2</Rowid> </Row> <Row> <user>ert</user> <Rowid>3</Rowid> </Row> <Maxrowid>3</Maxrowid> </Root> 次に、以下のクエリは、ノード 'user'()に値 'abc'または 'xyz'を含むxml列を含む行のsl_no列とmyxmlcolumnを返します。クエリの下では、SQLのINオプションに似ています。 SELECT [mytable].[Sl_no], [mytable].[myxmlcolumn] FROM [mydb].dbo.[mytable] WHERE [myxmlcolumn].exist('for $x in /Root/Row where (($x/user[fn:upper-case(.)=(''ABC'',''XYZ'')])) return $x') > 0 SQL 'NOT IN'と同じように機能する同様のクエリが必要です。それは私の場合、xml列のノード「user」()に「abc」または「xyz」の値がない行が必要です。だから私を助けてください。

1
SQLとツリーのリンクリスト
SQLはテーブルのような操作とより密接に関連しており、再帰的ではありませんが、リンクされた(またはダブルリンクされた)リストの概念(たとえば、Cにあるような)を実装したいとします。 リンクされたリストの任意の場所から任意の場所にアイテムを移動できることを考慮して、これを効率的に行う方法はありますか? CLRを使用するいくつかのソリューション? それとも、SQL Serverに持ち込まないでください。 この質問はリンクされたリストVSツリーの議論にも発展したことに注意してください 私はSQL Serverをピン留めしましたが、これは学術的な質問なので、これはデータベースに持ち込むべきではないという結論に達したとしても、他のソリューションでも良いです。

1
SQL Serverは使用可能なメモリを使用していません
Windows 2008R2 Enterprise上のSQL Server 2008 R2 Standard Edition(64ビット) サーバーには300 GBを超えるメモリがありますが、コントロールパネルの合計メモリ使用量が86 GBを超えることはありません 最大量のメモリを使用するようにSQLを構成する 頻繁に使用する場合でも-CPUが80%以上分 専用SQLサーバー いくつかの大きなデータベース 頻繁に使用される1つのテーブルのインデックスサイズだけで10 GBを超える メモリにロックを保持するようにサービスアカウントを設定する それは正常ですか? 何をテストできますか? SQL Serverでより多くのメモリを使用できますか?

1
どのマシンでTCP Chimney Offloadを無効にする必要がありますか?
Windows Server 2003 SP2でデフォルトで有効になっているTCP Chimney Offloadを無効にする方法について誰かに助言します。複数のサーバーマシン、つまりデータベースサーバーマシンと通信するアプリケーションサーバーマシンがある環境で作業しています。 これにより、アプリケーションとデータベース間の通信の問題が発生する可能性があります。KB942861およびWindows Scalable Networking Pack-SQL Serverのワークロードに対するパフォーマンスと同時実行の影響の可能性を参照してください。 どのマシンでTCP Chimney Offloadを無効にする必要がありますか?アプリケーション、データベース、またはその両方?

1
SSIS組織
私はSSMSに精通していますが、.net、c#、またはビジュアルスタジオ(アセンブラー、c、unix、vi、oracleなど)を使用したことがありません。 私は基本的な2012 SSIS ETL(BIまたはデータウェアハウスではない)を理解しようとしていますが、これらすべてがどのように組み合わされるかを説明するものは何も見つかりません。 カタログ ソリューション プロジェクト パッケージは他にありますか? SSISを使用して単純なテストを作成し、ファイルをテーブルにインポートする必要があるとしましょう。上記のどれが必要で、どのような順序で作成しますか? また、基本的なSSIS 2012 ETLの概要や記事への方法への良いリンクはありますか。

2
使用可能なすべての列を使用していない述語を探す
再現が難しい奇妙なクエリコンパイルの問題があります。これは高負荷でのみ発生し、簡単に繰り返すことはできません。 列A、B、C、Dを持つテーブルTがあります。 T(A、B、C、D)に一意でないクラスター化インデックスがあります。 クエリSELECT * FROM T WHERE A = @ P1 AND B = @ P2 AND(C = @ P3 OR C = @ P4)AND D = @ P5があります。シーク条件はクラスター化インデックスのすべての列にあり、3番目の列にはORがあります。 問題は、このクエリのクエリプランにはAとBのみにシーク述語があることです。CおよびDの述語は通常の述語であるため、列CおよびDの検索ツリーは使用されません。 すべてのパラメーターのデータ型は、列のデータ型と一致します。 なぜこれが起こり得るのかについてのヒントを誰かが提供できますか?SQLバージョンは2008 R2(SP1)-10.50.2789.0(X64)です

1
推定された行と実際の行の違い(実際は推定よりもはるかに小さい)-ソート
XMLドキュメントからいくつかのノードを処理するクエリを実行しています。私の推定サブツリーのコストは数百万単位であり、それはすべて、XPathを介してxml列から抽出したいくつかのデータに対してSQLサーバーが実行しているソート操作に由来するようです。Sortオペレーションの推定行数は約1900万ですが、実際の行数は約800です。クエリ自体は適切に実行されますが(1〜2秒)、クエリのパフォーマンスとその理由について疑問に思っています。違いはとても大きいですか?

2
SQLリストアを高速化するためにサーバーに何を追加できますか?
現在、復元に約9時間かかる2.8 TBのSQLデータベース(主にデータファイル、約400 GBのログファイル)を持っています。このデータベースはテスト目的で使用され、常に同じポイントから開始するように、実行のたびに削除してバックアップから復元する必要があります。 私の質問は、サーバーには現在12コアと92 GBのRAMがあり、データベースが存在するRAID 5ディスクサブシステムが搭載されていることです。通常、SQL復元プロセスのボトルネックとなる領域は何ですか?それはディスク、メモリ、またはCPUですか?

1
特定のアプリケーションに対してのみトリガーコードを実行させる方法は?
テーブルに対して実行されたSQLではなく、現在のアプリケーションに対してのみトリガーを有効にできるかどうか疑問に思っていました。 状況: 同じデータベースで作業している2つのアプリケーションがあります。App1およびApp2。 「MyTable」にトリガーがあります。これは、App1がクエリを実行しているときにのみ起動し、App2が実行しているときは起動しないようにします。

2
SQL Serverレプリケーション代替ソフトウェア
SQL Serverレプリケーションを長い間使用していて、いくつかの問題がありました。サブスクリプションを再初期化して、一部の問題を修正したり、レプリケーション構造全体を破棄して再構築したりする必要があったこともあります。 私たちの主な懸念は、レプリケーションの問題が発生すると、ほとんどの場合、簡単な解決策は、ビジネス要件で受け入れられないレプリケーションを再初期化することです。 現在、私たちは新しい大きなプロジェクトをリリースする準備をしています。SQLServerレプリケーションを実行するためのサードパーティソフトウェアを探しています。 私たちのセットアップには、ブランチに分散したサーバー(さまざまな国)+モバイルクライアント(ローカルSQL Serverデータベースを備えたラップトップ)が含まれており、記事のフィルタリングを提供する機能を使用して、これらすべての間でデータを複製する必要があります。 誰かが私たちにいくつかの代替ソリューションを提案してくれませんか?


1
デタッチ/アタッチまたはオフライン/オンラインは、特定のデータベースのバッファキャッシュをクリアしますか?
私の友人は今日、SQL Serverをバウンスする代わりに、データベースをデタッチしてから再アタッチするだけで、このアクションにより、指定されたデータベースのページとプランをキャッシュからクリアできると私に言った。私は同意せず、以下の証拠を提供します。あなたが私に同意しない場合、またはより良い反論がある場合は、必ずそれを提供してください。 このバージョンのSQL ServerでAdventureWorks2012を使用しています。 SELECT @@ VERSION; Microsoft SQL Server 2012-11.0.2100.60(X64) Windows NT 6.1(Build 7601:Service Pack 1)上のDeveloper Edition(64ビット) データベースをロードしたら、次のクエリを実行します。 まず、ここにあるJonathan KのAW肥大化スクリプトを実行します。 AW Get Fat --------------------------- -ステップ1:Bpool Stuff? --------------------------- USE [AdventureWorks2012]; 行く 選択する OBJECT_NAME(p.object_id)AS [ObjectName] 、p.object_id 、p.index_id 、COUNT(*)/ 128 AS [バッファサイズ(MB)] 、COUNT(*)AS [buffer_count] から sys.allocation_units AS a INNER JOIN sys.dm_os_buffer_descriptors AS …

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