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

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

2
「CONCAT」は認識される組み込み関数名ではありません
クライアントからSQL Server 2012で実行されていることが報告されましたが、最終的な配信の前にテスト用のテストクエリをいくつか配信しました。 「CONCAT」は、認識される組み込み関数名ではありません。 CONCAT()これは、SQL Server 2012で導入された新しい組み込み関数であり、すべて問題なく機能していることを理解していますが、「クエリを実行するユーザーは、 Transact-SQLを実行する権限があります。」したがって、クライアントには、PRODとは異なるバージョンのSQL ServerがDEVにインストールされている可能性が高いことを証明しています。 SELECT/EXECUTE組み込みスカラー値関数のアクセス許可を明確に拒否することに関する情報を見つけることができませんが、それは可能ですが、もしそうなら、ユーザーは同じエラーテキストを受け取りますか?

3
メンテナンスプランでバックアップデータベースタスクを作成する際の「バックアップセットの有効期限:」オプションの使用方法
データベースのバックアップ中に、「バックアップセットの有効期限:」オプションを使用して、古いデータベースのバックアップを削除/上書きします。このオプションは使用できません。 メンテナンスプランの作成中に「バックアップセットの有効期限が切れる」オプションの使用方法に関するアドバイスを歓迎します。

3
パーティションキーもプライマリキーの一部である必要がありますか?
主キーではない列に基づいてテーブルをパーティション分割していますか?今日、パーティション列を主キーの一部にする必要があるかどうかに関するいくつかの矛盾する情報を読みました。私の腸はノーと言うが、私は100%確信していない。だから質問... パーティション列はプライマリの一部である必要がありますか?どちらの方法がお勧めですか? パーティションキーのインデックスを作成する必要がありますか、それともDBMSが自動的にインデックスを作成しますか?

4
データベースに挿入が1つしかない場合、可能なすべての列の組み合わせにインデックスを付けるのは悪いことですか?
私は、大規模な選択クエリを必要とするレポートシステムに取り組んでいますが、データベースは一度しか入力されていません。データベース管理システムはMicrosoft SQL Server 2017です。このようなシステムを設計するより良い方法はおそらくありますが、理論的にこれにアプローチしましょう。 理論的に言えば: 非常に大きなデータベース(複数のテーブルに1億5000万行以上)がある場合 また、データベースには一度しかデータが入力されないと想定できます。 可能なすべての列の組み合わせにインデックスを付けると、選択クエリのパフォーマンスに悪影響が出る可能性がありますか?

1
このクエリでインデックススプールが使用されないのはなぜですか?
オプティマイザーの動作をよりよく理解し、インデックススプールの制限を理解するために、この質問をしています。ヒープに1〜10000の整数を入れると仮定します。 CREATE TABLE X_10000 (ID INT NOT NULL); truncate table X_10000; INSERT INTO X_10000 WITH (TABLOCK) SELECT TOP 10000 ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM master..spt_values t1 CROSS JOIN master..spt_values t2; そして、ネストされたループ結合を強制しますMAXDOP 1: SELECT * FROM X_10000 a INNER JOIN X_10000 b ON a.ID = b.ID OPTION (LOOP JOIN, …

1
このMERGEステートメントによりセッションが強制終了されるのはなぜですか?
MERGEデータベースに対して発行される以下のステートメントがあります: MERGE "MySchema"."Point" AS t USING ( SELECT "ObjectId", "PointName", z."Id" AS "LocationId", i."Id" AS "Region" FROM @p1 AS d JOIN "MySchema"."Region" AS i ON i."Name" = d."Region" LEFT JOIN "MySchema"."Location" AS z ON z."Name" = d."Location" AND z."Region" = i."Id" ) AS s ON s."ObjectId" = t."ObjectId" WHEN NOT …

3
現在の年を除くすべてをアーカイブし、同時にテーブルをパーティション分割する最良の方法は何ですか
仕事 大きなテーブルのグループから、13か月のローリング期間を除くすべてをアーカイブします。アーカイブされたデータは別のデータベースに保存する必要があります。 データベースは単純復旧モードです テーブルは50ミリ行から数十億行で、場合によってはそれぞれ数百GBを占有します。 テーブルは現在パーティション化されていません 各テーブルには、増え続ける日付列に1つのクラスター化インデックスがあります 各テーブルには、さらに1つの非クラスター化インデックスがあります テーブルに対するすべてのデータ変更は挿入です 目標は、プライマリデータベースのダウンタイムを最小限に抑えることです。 サーバーは2008 R2 Enterpriseです 「アーカイブ」テーブルには約11億行、「ライブ」テーブルには約4億行が含まれます。明らかに、アーカイブテーブルは時間とともに増加しますが、ライブテーブルも合理的に急速に増加することを期待しています。少なくとも次の数年で50%と言います。 Azureストレッチデータベースについて考えていましたが、残念ながら2008 R2にあり、しばらくそこに留まる可能性があります。 現在の計画 新しいデータベースを作成する 新しいデータベースに(変更日を使用して)月ごとにパーティション分割された新しいテーブルを作成します。 直近の12〜13か月分のデータをパーティションテーブルに移動します。 2つのデータベースの名前変更スワップを行う 移動したデータを現在の「アーカイブ」データベースから削除します。 「アーカイブ」データベースの各テーブルをパーティション分割します。 パーティションスワップを使用して、将来データをアーカイブします。 アーカイブするデータをスワップアウトし、そのテーブルをアーカイブデータベースにコピーし、それをアーカイブテーブルにスワップする必要があることを理解しています。これは許容範囲です。 問題: データを初期パーティションテーブルに移動しようとしています(実際、まだデータの概念実証を行っています)。私はTF 610(データロードパフォーマンスガイドに従って)とINSERT...SELECTステートメントを使用して、データを最小限に記録されると最初に考えて移動しようとしています。残念ながら、私が試すたびに完全にログに記録されます。 この時点で、SSISパッケージを使用してデータを移動することが最善の策だと考えています。200個のテーブルと、スクリプトでできることはすべて簡単に生成して実行できるため、これを回避しようとしています。 私の一般的な計画で不足しているものはありますか?SSISは、ログを最小限に抑えてデータをすばやく移動するための最善の策です(スペースの問題)? データなしのデモコード -- Existing structure USE [Audit] GO CREATE TABLE [dbo].[AuditTable]( [Col1] [bigint] NULL, [Col2] [int] NULL, [Col3] [int] NULL, [Col4] [int] …

1
SQL Serverにパッチは適用されますか?
SQL Serverインスタンスにパッチが適用されているかどうかを確認するにはどうすればよいですか?サーバーに利用可能なパッチがあるかどうかを識別するネイティブ機能はありますか?ちなみに、バージョンデータさえ入手できますか?
23 sql-server 

1
修正不可能な空間インデックスの破損は正常と見なされますか?
破損を報告する空間インデックスがありDBCC CHECKDBます: DBCC CHECKDB(MyDB) WITH EXTENDED_LOGICAL_CHECKS, DATA_PURITY, NO_INFOMSGS, ALL_ERRORMSGS, TABLERESULTS 空間インデックス、XMLインデックス、またはインデックス付きビュー 'sys.extended_index_xxx_384000'(オブジェクトID xxx)には、ビュー定義が生成するすべての行が含まれていません。これは、必ずしもこのデータベース内のデータの整合性の問題を表しているわけではありません。 空間インデックス、XMLインデックス、またはインデックス付きビュー 'sys.extended_index_xxx_384000'(オブジェクトID xxx)には、ビュー定義によって生成されなかった行が含まれています。これは、必ずしもこのデータベース内のデータの整合性の問題を表しているわけではありません。 CHECKDBは、テーブル 'sys.extended_index_xxx_384000'(オブジェクトID xxx)で0の割り当てエラーと2つの一貫性エラーを検出しました。 修理レベルはrepair_rebuildです。 インデックスを削除して再作成しても、これらの破損レポートは削除されません。なしでEXTENDED_LOGICAL_CHECKSはなくてDATA_PURITYエラーが報告されていません。 また、CHECKTABLECIのサイズは30 MBで、約3万行ありますが、このテーブルには45分かかります。そのテーブルのすべてのデータはポイントgeographyデータです。 この動作はどのような状況でも予想されますか?「これは必ずしも整合性の問題を表しているわけではありません」と書かれています。私はどうしたらいいですか?CHECKDB失敗しています。これは問題です。 このスクリプトは問題を再現します: CREATE TABLE dbo.Cities( ID int NOT NULL, Position geography NULL, CONSTRAINT PK_Cities PRIMARY KEY CLUSTERED ( ID ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, …

4
Windows認証を使用すると、SQL Server Management Studioの接続が遅くなるかタイムアウトになる
Windows認証を使用してTCP経由でSQL Server 2012インスタンスに接続しようとすると、SQL Server Management Studio 2014で非常に長い遅延(10〜30秒)が発生します。これは、オブジェクトエクスプローラーまたは新しい空のクエリウィンドウを接続するときに発生します。接続すると、クエリの実行が高速になります。SQL Server認証を使用して接続する場合、問題は発生しません。 環境: Windows 7、ドメインユーザーとしてログイン IPアドレスを介したTCP接続(ホスト名ではない) サーバーは、VPN経由で接続されたリモートロケーションにあります 暗号化なし ドメインアカウントで同僚のWindows 7コンピューターにログインし、同じVPNを介して同じSQL Serverに接続した場合、遅延はありませんでした。同じ同僚が自分のドメインアカウントでPCにログインすると、遅延が発生しました。これらのテストは、問題が私のPCに固有であることを示しています。また、この特定のSQL ServerおよびVPNに接続するときにのみ問題が発生します。Windows認証を介して、ローカルネットワーク上の他のSQL Serverに遅滞なく接続できます。 私が成功せずに試したもの: 無効化されたウイルス対策およびファイアウォール 「%userprofile%\ AppData \ Roaming \ Microsoft \ SQL Server Management Studio」の下の「12.0」フォルダーの名前を「_12.0」に変更して、SSMSにユーザー設定を再作成させました。 ネットワークプロトコルをTCPではなくTCPに強制します<default>。名前付きパイプも試しましたが、サーバーはそのためにセットアップされていません。 SSMS 2012をインストールし、2014の代わりに試してみました。 無効なIPv6 etc \ hostsファイルでcrl.microsoft.comを127.0.0.1にブラックホールしました。 SSMS、Visual Studio、およびWindowsのカスタマーエクスペリエンス向上プログラムを無効にしました。 すべてのSQL Server関連アプリをPCからアンインストールし、2012年に再インストールしました。 TCPViewの手がかり: TCPViewを使用して、新しい接続を作成するとすぐに状態がESTABLISHEDになりますが、SQL Serverとの1つまたは2つ以上の接続が継続的に試行され、TIME_WAITで閉じられることに気付きました。同僚のコンピューターでは、これらの接続は確立されており、しっかりしています。だから、これがタイムアウトの原因であると確信していますが、接続は何のためであり、なぜ失敗するのですか?(SSMSにはアドオンがありません。) 何か案は? 更新:Intellisense /オートコンプリートの手掛かり(?): ついに接続したら、Intellisense …

5
DMVから、接続がApplicationIntent = ReadOnlyを使用したかどうかを確認できますか?
Always On可用性グループがセットアップされており、ユーザーが接続文字列でApplicationIntent = ReadOnlyを使用していることを確認したい。 DMV(または拡張イベントなど)を介してSQL Serverから、ユーザーが接続文字列でApplicationIntent = ReadOnlyで接続したかどうかを確認できますか? 接続を防止する方法については答えないでください-それはこの質問の目的ではありません。適切な文字列なしで接続している既存のアプリケーションがあるため、単純に接続を停止することはできません。どのアプリケーションであるかを知る必要があります。 ユーザーが複数のアプリケーションを持っていると仮定します。たとえば、ボブはSQL Server Management StudioおよびExcelに接続します。彼は、更新を行う必要があるときにSSMSに接続し、読み取りを行う必要があるときにExcelに接続します。彼がExcelに接続するときにApplicationIntent = ReadOnlyを使用していることを確認する必要があります。(これは正確なシナリオではありませんが、説明するには十分です。)

2
プロセスID、プロセス名、ログイン時間、ユーザー、開始時間、継続時間を含む長時間実行クエリを見つけるにはどうすればよいですか
長期実行クエリの詳細については、誰でも私を助けることができますか?ProcessID、プロセス名、データベース、ホスト、ユーザー、プロセスログイン時間、クエリ開始時間、クエリ期間。 このデータを提供するクエリまたはSPを探しています。
23 sql-server 

2
SQL ServerのREAD COMMITTED SNAPSHOTとSNAPSHOT
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 6年前に移行され ました。 私はSQL Server READ COMMITTED SNAPSHOTとSNAPSHOT分離レベルの違いを調査していて、次のリソースに出会いました。 行バージョン管理ベースの分離レベルの選択 ほとんどのアプリケーションでは、次の理由から、スナップショットアイソレーションよりも行バージョン管理を使用したコミットコミットアイソレーションをお勧めします。 スナップショット分離よりも少ないtempdbスペースを消費します。 スナップショットアイソレーションは、行のバージョン管理を使用した読み取りコミットアイソレーションには適用できない更新の競合に対して脆弱です。スナップショット分離で実行されているトランザクションがデータを読み取ってから別のトランザクションで変更されると、スナップショットトランザクションによる同じデータへの更新により更新の競合が発生し、トランザクションが終了してロールバックされます。これは、行のバージョン管理を使用した読み取りコミット分離の問題ではありません。 私はこれらのトピックにやや不慣れですが、上記のリンクから2つの箇条書きを理解できないようです。 これらのモードでtempdbスペースが異なるのはなぜですか?一方は他方よりも詳細なバージョン管理を保存しますか? スナップショット分離は、更新の競合に対してより脆弱なのはなぜですか?


5
SSMSの大文字キーワードを作成する方法
私は最近のMySQL Workbenchを使用した場合の管理Studio 2012を使用して開始した、便利な機能は、私が下部ケースと(のような任意の予約語ですべてを保つことができるということでしたSELECT、INSERT自動的に大文字に変換します)。この動作をSSMSで複製するにはどうすればよいですか?

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