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

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

3
プライマリで一時的に時間がかかる読み取り専用レプリカでの長時間実行クエリ
私は次のように4ノードAGセットアップを持っています。 すべてのノードのVMハードウェア構成: Microsoft SQL Server 2017 Enterprise Edition(RTM-CU14)(KB4484710) 16個のvCPU 356 GB RAM(これまでの話...) 最大並列度:1(アプリベンダーの要求に応じて) 並列処理のコストしきい値:50 最大サーバーメモリ(MB):338944(331 GB) AG構成: ノード1:プライマリまたは同期コミット読み取り不可セカンダリ、自動フェイルオーバー用に構成 ノード2:プライマリまたは同期コミット、読み取り不可のセカンダリ、自動フェイルオーバー用に構成 ノード3:読み取り可能なセカンダリセット、非同期コミット、手動フェイルオーバー用に構成 ノード4:非同期のコミットを備えた読み取り可能なセカンダリセット、手動フェイルオーバー用に構成 問題のクエリ: このクエリについては、まったくおかしなことは何もありません。アプリケーション内のさまざまなキューにある未解決の作業項目の概要を提供します。以下の実行プランのリンクの1つからコードを確認できます。 プライマリノードでの実行動作: プライマリノードで実行した場合、実行時間は通常約1秒です。以下は実行計画です。以下は、プライマリノードからのSTATISTICS IOおよびSTATISTICS TIMEからキャプチャされた統計です。 (347 rows affected) Table 'Worktable'. Scan count 647, logical reads 2491, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical …

1
なぜ複数の(関連付けられていない)時系列履歴テーブルがあるのですか?
SQL Server 2017バックエンドを備えた概念実証システムをセットアップしています。 システムはテンポラルテーブルを使用して、資産構成を記録し、時間の経過に伴う変化を追跡します。 履歴テーブルにリンクされているデータテーブルがあります。それをdbo.MSSQL_TemporaryHistoryFor_12345678900と呼びましょう。 ここまでは順調ですね。私には2つの問題があります。 今日、テーブルのバージョニングをオフにして、計算列を追加できるようにしました。これが行われ、エラーなしで再びオンになりました。 変更前の履歴データをクエリできないことがわかりました。新しいデータが履歴に追加されていますが、事前には何もありません。 SSMSの内部を見ると、すべて同じ名前で16進数のサフィックスが付いた複数の履歴テーブルがあることがわかります(例:dbo.MSSQL_TemporaryHistoryFor_12345678900_A0B1C2D3)。メインデータテーブルの下にリンクされていません。彼らはデータベース内で自分たちだけで浮かんでいるだけです。私がsys.tablesをクエリしたとき、これらは履歴テーブルとして表示されず、メインデータテーブルにリンクされていません。 これらのテーブルには、欠落している履歴データが含まれています。 したがって、私が持っている質問は次のとおりです。 これらの追加の表は何を表していますか? 彼らはどのように作成されましたか? これらをメインの履歴チェーンに何らかの形で再リンクして、履歴レポートを取り戻す方法はありますか? それは非常にイライラするので、あなたが提供できるどんな助けもありがたく受け取られるでしょう。ありがとう。

2
charindex関数の長い文字列を分割/保存する最速の方法
1 TBの数字列があります。12文字の数字のシーケンスが与えられた場合、元の文字列(charindex関数)でこのシーケンスの開始位置を取得します。 SQL Serverを使用して1GBの文字列と9桁の部分文字列でこれをテストし、文字列をとして保存しましたvarchar(max)。Charindex10秒かかります。1 GBの文字列を900バイトのオーバーラップチャンクに分割し、バイナリ照合でchunkofstringを使用してテーブル(StartPositionOfChunk、Chunkofstring)を作成すると、インデックス作成に1秒未満かかります。10GB、10桁の部分文字列の後者の方法では、charindexが1.5分に上昇します。より高速な保存方法を見つけたいのですが。 例 数字列:0123456789-検索する部分文字列345 charindex( '345'、 '0123456789')は4を与えます 方法1:これを、1つの列で構成されるSQL Serverテーブルstrtableに格納しcolstr、実行できます。 select charindex('345',colstr) from strtable 方法2:または、元の文字列を分割することにより、テーブルstrtable2(pos、colstr1)を作成できます。2; 123 | 3; 234 asoそして、クエリを select pos from strtable2 where colstr1='345' 方法3:元の文字列をより大きなチャンクに分割することで、テーブルstrtable2(pos2、colstr2)を作成できます1; 01234 | 4; 34567 | 7、6789、次いで select pos2+charindex('345',colstr2) from strtable2 where colstr2 like '%345%' 最初の方法が最も遅いです。 2番目の方法では、データベースのストレージサイズが大きくなります。 方法3:バイナリ照合でcolstr2の長さを900バイトに設定し、この列にインデックスを作成すると、1GBの文字列と9桁の部分文字列の検索に1秒かかります。10GBの文字列と10桁の部分文字列の場合、istには90秒かかります。 これをより速くする他のアイデア(おそらく、文字列を使用することによって、文字列は長整数の数字で構成されます...)? 検索では常に、1 TBの数字列の12桁の部分文字列が検索されます。SQLServer 2017 …

1
クラスター化インデックスのように本質的に順序付けられたデータ
750万レコードの次の表があります。 CREATE TABLE [dbo].[TestTable]( [Id] [int] IDENTITY(1,1) NOT NULL, [TestCol] [nvarchar](50) NOT NULL, [TestCol2] [nvarchar](50) NOT NULL, [TestCol3] [nvarchar](50) NOT NULL, [Anonymised] [tinyint] NOT NULL, [Date] [datetime] NOT NULL, CONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, …

2
SSMSテンポラルテーブルにない上位N行を選択
データベース内でテンポラルテーブルを使用していますが、Management Studio 2017(v17.4 14.0.17213.0)でテーブルを右クリックすると、コンテキストメニューに[上位1000行を選択 ]が表示されません(非テンポラルテーブルには問題はありません) ) このコンテキストメニューを元に戻す方法はありますか?私が実行しているSQL Serverのバージョン(SQL 13.1.4001.0 Express Edition)に関係していると感じています

3
SQL Serverエラー、「FETCHステートメントでのオプションFIRSTの使用法が無効です。」
2012年以降、SQL Serverのドキュメントは、OFFSET..FETCH私がの代わりに使用しようとしているものをサポートしていることを示していLIMITます。 以下はPostgreSQLで正常に動作し、結果セットをサンプリングします。 SELECT * FROM ( VALUES (1),(2),(3) ) AS t(x) OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY; しかし、SQL Serverでは、 Msg 153, Level 15, State 2, Line 4 Invalid usage of the option FIRST in the FETCH statement. 何が起きてる?SQL Serverは標準化されたOFFSET..をサポートしていますFETCHか?

2
ファイルが関連付けられていないファイルグループは削除できません
SQL Server 2017 CU3で奇妙なエラーメッセージが発生します。データベースを移行し、ファイルグループを再編成しています。「再編成」とは、オブジェクトの新しいファイルグループにパーティション関数とパーティション構成を作成し、パーティション分割中にインデックスを再構築してからパーティション分割を削除するストアドプロシージャを使用することを意味します。 最後に、いくつかの空のファイルグループを取得しました。それらのファイルは削除されます。また、ファイルグループ自体も削除されます。これはほとんどの場合うまくいきます。ただし、2つのデータベースの場合、ファイルを削除しました... 関連付けられているファイルがないままファイルグループが残っていますが ALTER DATABASE REMOVE FILEGROUP エラー5042をスローします。 ファイルグループ 'xyz'は空ではないため削除できません。 質問 空のファイルグループを削除するにはどうすればよいですか? 私はすでにいくつかの一般的な問題を読みましたが、それらは私のシステムにはありません: チェック済み: SELECT * FROM sys.partition_schemes; SELECT * FROM sys.partition_functions; 0行...データベースにパーティションオブジェクトが残っていません UPDATE STATISTICS データベース内のすべてのオブジェクト 無効 ファイルグループのインデックスをチェックします。 SELECT * FROM sys.data_spaces ds INNER JOIN sys.indexes i ON ds.data_space_id = i.data_space_id WHERE ds.name = 'xyz' 0行 ファイルグループ内のオブジェクトを確認します。 …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.