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

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

1
パーティションビューで削除を実行すると、クラスター化インデックスが挿入されるのはなぜですか?
以下の挿入トリガーがあるパーティションビューがあります(貧弱なパーティション)。DELETEを実行すると、以下のクエリプランが表示されます。 delete from factproductprice where pricedate = '20170725' ビューのトリガー: ALTER TRIGGER [dbo].[factProductPriceDelete] ON [dbo].[FactProductPrice] INSTEAD OF DELETE AS BEGIN IF @@ROWCOUNT = 0 RETURN; DECLARE @PriceDate DATE SELECT @PriceDate = CAST(PriceDate AS DATE) FROM DELETED IF @PriceDate BETWEEN '20140101' AND '20141231' BEGIN DELETE FROM dbo.FactProductPrice2014 WHERE ProductId IN (SELECT ProductId …

3
主キーの自己結合
N自己結合で構成されるこのクエリについて考えてみます。 select t1.* from [Table] as t1 join [Table] as t2 on t1.Id = t2.Id -- ... join [Table] as tN on t1.Id = tN.Id N個のクラスター化インデックススキャンとN-1個のマージ結合を含む実行プランを作成します。 正直なところ、すべての結合を最適化せずに1つのクラスター化インデックススキャンだけを行う理由はありません。つまり、元のクエリを次のように最適化します。 select t1.* from [Table] as t1 ご質問 結合が最適化されないのはなぜですか? すべての結合が結果セットを変更しないと言うのは数学的に正しくありませんか? テスト済み: ソースサーバーのバージョン:SQL Server 2014(12.0.4213) ソースデータベースエンジンエディション:Microsoft SQL Server Standard Edition ソースデータベースエンジンの種類:スタンドアロンSQLサーバー 互換性レベル:SQL Server 2008(100) クエリは意味がありません。それはちょうど私の頭に浮かんできました、そして私はそれについて今興味があります。 …

1
フルテキスト:複数のフルテキストインデックスが作成された後、多数のFT_MASTER_MERGEがSUSPENDED状態で待機します(サーバーがハングします)
10個のデータベース、各データベースに100個の異なるスキーマ、各スキーマに10個の小さな(約50行)テーブル(合計で10K個のテーブル)があり、これらすべてにフルテキストインデックスを作成したときに、SQL Server 2014でテストを行いましたこれらすべてのデータベースのテーブルを同時に。 数分後に、SQL Serverが接続(ADMIN:.接続以外)を受け入れるために停止したことがわかりました。サーバーを再起動すると接続できますが、しばらくするとハングします。いくつかの調査の後、我々は、それがすべての作業スレッドを消費によって引き起こされることを見出し、dm_os_tasksおよびdm_os_waiting_tasksロットがあることを私たちに示したFT_MASTER_MERGEで待機SUSPENDED状態。「フルテキストはマスターマージ操作を待機しています」とグーグル検索しましたが、それに関する実際の情報は見つかりませんでした。 さまざまなフルテキストカタログ構成を試しました。DBごとに1つのカタログ、スキーマごとに1つのカタログ、インデックスごとに1つのカタログです。とにかく、サーバーはこれらすべての中断されたタスクでハングします。 待機の根本的な原因は何ですか?これをどのように修正/緩和できますか? そして、そのような大量のテーブルでフルテキストを有効にするための推奨される方法は何ですか?

2
ほとんどのクエリプランは過去4時間に再作成されました
SQL Serverデータベースのパフォーマンスに問題があります。このツールsp_BlitzCacheを見つけました。コマンドの実行後、次のステートメントが得られました。 過去24時間に92.00%のプランが作成されており、過去4時間に92.00%のプランが作成されています。 問題を特定しましたが(SQL Server Profilerを使用して、StmtRecompileイベントの発生を確認しました)、頻繁に再構築される少数の全文検索クエリのみを見つけることができました。ただし、全文検索クエリは、全クエリの約5%にすぎません。 残りの87%のプランを再現する原因となる提案はありますか? SQL Server 2012(バージョン11.0.6567.0)を持っています。 編集:パフォーマンスカウンターを追加しました +---------------------------+--------------------------------+--------------+ | object_name | counter_name | cntr_value | +---------------------------+--------------------------------+--------------+ | SQLServer:Buffer Manager | Background writer pages/sec | 0 | | SQLServer:Buffer Manager | Buffer cache hit ratio | 28436 | | SQLServer:Buffer Manager | Buffer cache hit ratio base …

2
SQL Server TDEを使​​用してリモートバックアップを書き込むときに、ネットワークトラフィックは暗号化されますか?
彼らは「愚かな質問」などはないと言っているので、ここに行く: SQL Serverの透過的データ暗号化(TDE)が保存データを暗号化し、誰かがストレージに侵入してそれらのファイルを盗んだ場合にデータベースファイル(.mdf)とバックアップファイル(.bak)が暗号化されることを理解しています。また、ディスクから読み取ったときにデータが復号化され、メモリ内で(暗号化されて)暗号化されないことも理解しています。したがって、リモートクエリ(select * from SensitiveData)を実行しているユーザーによって要求されたデータは、ネットワーク上を移動するときに暗号化されないため、傍受されやすくなります。 したがって、上記のすべてが正しいと仮定すると、ここで私の愚かな質問があります:SQL ServerインスタンスがコンピューターAにあり、TDEデータベースのバックアップがリモートコンピューターBのストレージに書き出されている場合、バックアップ操作データは転送元として暗号化されますか?コンピューターAはコンピューターBのディスクに書き込まれますか?(暗号化操作は最初にコンピューターAで行われると想定しているため)必要があると思いますが、Microsoftのドキュメントやブログでこれの確認を見つけることができません。同様に、復元操作中に–コンピュータBのディスクから転送されているデータを傍受して、コンピュータAのデータベースを復元する人はいますか–暗号化されたデータが暗号化されているのを見つけましたか?

1
トランザクションログを切り捨てることができません、log_reuse_wait_desc-AVAILABILITY_REPLICA
今朝、私はデータベースの1つでトランザクションログが一杯になったという警告に目覚めました。このサーバーは、常時接続のクラスターであり、トランザクションレプリケーションサブスクライバーでもあります。log_reuse_wait_descを確認したところ、logbackupが表示されました。4日前に誰かが誤ってlogbackupジョブを無効にしていたため、ログバックアップジョブを再度有効にしたところ、ログがクリアされました。午前4時だったので、その朝遅くにオフィスに行って、ログが400GBに達したときにログを鳴らそうと思いました。 午前10時-オフィスにいて、縮小する前にログの使用状況を確認したところ、約16%でした。私は驚いて、複製を示したlog_reuse_wait_descを確認しました。これがレプリケーションサブスクライバーだったため、混乱しました。次に、dbがCDCに対して有効になっていることがわかり、それが原因である可能性があるため、CDCを無効にすると、log_reuse_wait_descにAVAILABILITY_REPLICAが表示されます。 一方、ログの使用量は着実に増加しており、現在は17%です。alwaysonダッシュボードを確認し、送信済みキューとやり直しキューを確認しましたが、どちらもほぼゼロです。ログの再利用がAVAILABILITY_REPLICAと表示され、ログをクリアできない理由がわかりません。 なぜこれが起こっているのでしょうか?

3
1つの列でDISTINCTを実行し、TOP行を返します
最大の顧客3人をどのようにクエリしますPurchase_Costか? DISTINCTonのみを適用したいのですCustomer_Nameが、以下のクエリは3つの列すべてに個別を適用します。クエリを変更して目的の出力を取得するにはどうすればよいですか? SELECT DISTINCT TOP 3 customer_name, order_no, Purchase_Cost FROM PurchaseTable ORDER BY Purchase_Cost

1
リンクされたSQL Serverにはどのような大きな制限が予想されますか?
当社の製品は、Microsoft SQL Serverに基づいています。現在、3つのデータベースを使用しており、常に1つのSQL Serverインスタンスに展開しています。 3つのデータベースは、OLTP、OLAP、および監査です。OLAPデータベースには、クロスデータベースクエリを使用して、OLTPと監査の両方からのEODに関する大規模な受信データがあります。 ご質問 これらの3つのデータベースを単一の物理サーバー内の3つの別々のStandard Edition インスタンスに展開し、SQL Serverのリンクサーバー機能を使用してそれらをバインドするとします。 アプリケーションコードに対してどの程度透過的ですか?どのくらいの変化を期待できますか? OLAPへのインバウンドデータの量は5万〜10万行で、EODあたりのペイロードは200〜500 MBでした。どのくらいのパフォーマンス低下が予想されますか? 他にどんな大きな制限を期待する必要がありますか? バックグラウンド 現在、最初の潜在的なクライアントを500人以上の同時ユーザーに売り込んでいます。 64コアと256GB RAMを含むサーバー仕様を作成しています。SQL Serverがこれらの豊富なリソースをすべて利用するには、クライアントはEnterprise Editionを購入する必要があります。EnterpriseEditionは、SQL Server 2016ではコア単位のライセンスでのみ利用できます。 ライセンス費用だけ(64 x $ 7400)でそれらが下がることを恐れています。したがって、データベースをStandard Editionの3つのインスタンスに分割し、それらをリンクして、リンク機能がアプリケーションコードから透過的になることを期待しています。

3
CLRを使用せずにデータベースレベルの定数(列挙)を作成しますか?
要求の望ましい状態に基づいて代替アクションを実行する必要があるいくつかのSQLオブジェクトがあります。ストアドプロシージャ、テーブル値関数に渡し、クエリで使用できる(CLRを使用せずに)データベースレベルの定数(列挙)を作成する方法はありますか? CREATE PROCEDURE dbo.DoSomeWork(@param1 INTEGER, ..., @EnumValue myEnumType) AS ...; そしてそれを使います: EXEC doSomeWork 85, ..., (myEnumType.EnumValue1 + myEnumType.EnumValue2); myEnumTypeいくつかの列挙値を保持する場所。 手順では、必要な作業を実行するために、@EnumValue値を使用してテストすることができますmyEnumType。私がmyEnumType検討しているケースでは、ビットマスクの値を作成します。 簡単な例として、巨大なデータセットを受け取り、それをより小さくても非常に大きなデータセットに削減する高価なプロセスを考えてみます。このプロセスでは、そのプロセスの途中で、結果に影響を与える調整を行う必要があります。これは、削減内の中間計算のステータスに基づいて、特定のタイプのレコードをフィルターする(またはフィルターする)とします。@EnumValueタイプのはmyEnumType、このために、テストに使用することができ SELECT ... FROM ... WHERE (@EnumValue & myEnumType.EnumValue1 = myEnumType.EnumValue1 AND ...) OR (@EnumValue & myEnumType.EnumValue2 = myEnumType.EnumValue2 AND ...) OR ... CLRを使用せずに、SQL Serverでこのようなデータベースレベルの定数を使用できますか? ストアドプロシージャや関数などにパラメーターとして渡すことができるデータベースレベルの列挙または定数のセットを探しています。

1
COALESCEは今でも検索可能ですか?
私の開発者の1人は、これCOALESCE(column, default value) = default valueが現在は反論の余地があると主張しています。そうですか? 私は次のテストを実行しましたが、それがCOALESCE反論できないことを意味すると思います。 USE tempdb; SELECT @@VERSION; -- Microsoft SQL Server 2016 (RTM-CU3-GDR) (KB3194717) - 13.0.2186.6 (X64) Oct 31 2016 18:27:32 Copyright (c) Microsoft Corporation Developer Edition (64-bit) on Windows 10 Pro 6.3 <X64> (Build 14393: ) (Hypervisor) CREATE TABLE Test ( ID int primary key …

1
永続的な計算された列が原因でスキャン
通常の列を永続的な計算列に変換すると、このクエリでインデックスシークを実行できなくなります。どうして? 2016 SP1 CU1を含むいくつかのSQL Serverバージョンでテストされています。 レプロス 計算された列 通常の列 問題はtable1、col7です。 テーブルとクエリは、オリジナルの部分的な(そして簡略化された)バージョンです。クエリが別の方法で書き直される可能性があることは承知しており、何らかの理由で問題を回避しますが、コードに触れないようにする必要がありtable1ます。 ポールホワイトが示したように(ありがとう!)、シークは強制された場合に利用可能になるため、オプティマイザによってシークが選択されない理由と、シークを変更することなく、必要に応じてシークを実行するために別の方法を実行できるかどうかが問題になります。コード? 問題のある部分を明確にするために、不良な実行計画の関連するスキャンを以下に示します。

4
SQL Serverを停止する理由は何ですか?
私が読んだのは、コールドキャッシュを作成してメモリを消費するため、SQL Serverを停止することがどの程度の損害をもたらすかについてです。では、なぜSQL Serverを停止したいのでしょうか。私がこれについてもっと読むことができるように記事へのリンクを提供できるなら、私は本当にそれを感謝します! この質問は私の先生によって提起されました。トリックの質問でない限り、私は完全に困惑しています。彼の正確な質問は: インターネットを使用して調査を行い、SQL Serverを停止する理由を学びます。あなたの答えを説明しなさい。 これは、SQL Server 2008 R2の使用方法を調査している状況でした。彼が明白な答えを求めているのか、それとも私が見逃しているものがあるのか​​はわかりません。


3
SQL Server 2005から2016へのデータの移行
SQL Serverの管理は初めてですが、SQL言語とSSISパッケージの作成に慣れています。 SQL Server 2005から2016にデータを移行したい。 私の質問は、システムデータベースや、インデックス、ストアドプロシージャ、ビュー、セキュリティ、権限などの他のオブジェクトについて心配する必要があるかどうかです。ログインまたは単にデータを移行できますか。 この場合、どちらをお勧めしますか。

2
古いハックに対するSQL Serverのアドバイス[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、データベース管理者のスタック交換のトピックになるようにします。 3年前休業。 夜の男とギャル、あなたの伝説のいくつかがここで私を助けることができるかもしれないことを願っています:) 私はSQL Serverをバージョン7で暗黒時代に最後に使用しました(2本の棒をこすって動かしました)。今、私は21世紀に入っており、再びDBAの仕事に戻りたいと思います。 「安価な」仮想マシンとインスタンスをセットアップして、最新の認定に向けて取り組みたいと思います(最新版は2017年4月に開始されると思います。これは私にとって良いタイミングだと思います)。私は特にBIの側面に興味があります。 誰でも仮想マシンの優れたホスティングプロバイダーを推奨できますか?Windowsサーバーを入手してそこから移動するのですか、それともどこかでパッケージを入手できますか?Azureは私が想定しているのですか、それとも他の場所ですか?私はいくつかのオプションがあると思います。いくつかの良いものを共有できることを願っています:) さらに、その他の役立つヒントは大歓迎です、乾杯!

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