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

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

1
非常に巨大な(100,000,000+)テーブルのTOP(1)BY GROUP
セットアップ 〜115,382,254行の巨大なテーブルがあります。テーブルは比較的単純で、アプリケーションプロセスの操作を記録します。 CREATE TABLE [data].[OperationData]( [SourceDeciveID] [bigint] NOT NULL, [FileSource] [nvarchar](256) NOT NULL, [Size] [bigint] NULL, [Begin] [datetime2](7) NULL, [End] [datetime2](7) NOT NULL, [Date] AS (isnull(CONVERT([date],[End]),CONVERT([date],'19000101',(112)))) PERSISTED NOT NULL, [DataSetCount] [bigint] NULL, [Result] [int] NULL, [Error] [nvarchar](max) NULL, [Status] [int] NULL, CONSTRAINT [PK_OperationData] PRIMARY KEY CLUSTERED ( [SourceDeviceID] ASC, [FileSource] …


1
クエリストアによるブロッキング。クリアまたは無効にできません
2016 SQL Serverを最近SP2に更新し、最新のCU(KB4458621)を2018年8月にリリースしました。ちょうど最終日かそこらで、いくつかのブロックが発生していることに気付きました。SPID b / cはユーザープロセスではないため、強制終了できません。SP_WHO2によると、コマンドは「Query Store ASYN」です。スクリプトとUIを使用して、データをパージし、クエリストアを無効にしてみました。何も機能していないようで、スピンしてからブロックが発生し始めます。他に誰かがこの問題を抱えていますか?誰でも私がクエリストアを無効にする方法を理解するのを手伝ってくれる?SP_WhoIsActive @show_System_SPIDS = 1以下の結果(クエリストアの結果のみ) 更新-これにより、TempDBドライブがいっぱいになります。数時間後に再起動してみて、問題が解決するかどうか確認してください。投稿し続けます。 ありがとう、ネイト

1
SQL Server関数をオーバーロードすることは可能ですか?
SQLサーバー関数をオーバーロードすることは可能ですか?ltrimのようなスカラー、またはcountのような集約関数のどちらですか? これが本当に、本当に、悪い考えだったとしても。出来ますか? T-SQLのユーザー定義関数のオーバーロードの複製のいくらか?それは2005年のバージョンだったので、それは100%複製ではないと言えるでしょう。多分これは変わったのですか?

1
次のチェックポイントの前にシステムに障害が発生した場合、ダーティページはどうなりますか?
完全復旧モデルを使用しているデータベースを想定して、SQL Serverでレコードが(INSERT/ UPDATEなどによって)書き込まれると、先読みロギングにより、データページを変更する前に変更がログファイルに書き込まれることが保証されます。 ログとデータページの両方のエントリがRAMに作成され、後でチェックポイントによってディスクにコミットされます。 システムクラッシュ(議論のために電力損失)が発生した場合、RAMの内容がシステムの再起動後も存続しないため、ダーティページ(RAMで変更されてもディスクにコミットされないIEデータ)はどうなりますか? ? 編集 いくつかのテストの後、ダーティページが失われていないことがわかりますが、理由はわかりません。 このチュートリアルを使用して テストデータベースを作成する CREATE DATABASE DirtyPagesDB GO USE DirtyPagesDB GO 自動チェックポイントをオフにする DBCC TRACEON(3505, -1); DBCC TRACESTATUS(); テーブルを作成し、データを挿入して、チェックポイントを発行します。 CREATE TABLE t1 (Speaker_Bio CHAR(8000)) GO INSERT INTO t1 VALUES ('SQL'),('Authority') GO CHECKPOINT ダーティページがないことを確認する -- Get the rows of dirtied pages SELECT database_name = d.name, OBJECT_NAME …

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, …

1
組み込み関数を使用してデータベーストリガーの名前を解決するにはどうすればよいですか?
ユーザーデータベースに特定のプロシージャを作成できないようにするために使用するデータベーストリガーがあります。 それはで表示されsys.triggersて、object_idが、私は使用することはできませんobject_idそれを見つけるために関数を。 SELECT OBJECT_ID(t.name, t.type) AS object_id, * FROM sys.triggers AS t; 同様に、私はそれをで見つけることができますsys.dm_exec_trigger_stats。object_name解決することはできませんが、解決object_definitionします。 SELECT OBJECT_NAME(dets.object_id, dets.database_id) AS object_name, OBJECT_DEFINITION(dets.object_id) AS object_definition, * FROM sys.dm_exec_trigger_stats AS dets; データベースレベルのトリガーのオブジェクトIDを受け入れ、その名前を返す関数はありますか?

1
FULL最適化のプランが単純なパラメーター化を示すのはなぜですか?
私はそれが読み取り専用些細な計画はシンプルなパラメータ化することができ、そしてすべてのクエリは、(計画が簡易であっても)ではないことをパラメータ化されたシンプルなことができます。 では、なぜこの計画は完全な最適化と単純なパラメータ化を同時に示しているのでしょうか?

4
Caseステートメントでクエリを終了しますか?
2つの異なるテーブルの2つの日付を比較し、それらが等しい場合、クエリが終了するようにクエリを設定しようとしています。それらが等しくない場合、クエリは続行し、いくつかのものを挿入します。しかし、どうすれば自分のやりたいことができるのかわかりません。 SELECT TOP(1) @dateA=a.someDate FROM a ORDER BY DESC; SELECT TOP(1) @dateB=b.someDate FROM b ORDER BY DESC; CASE WHEN @dateA=@dateB THEN raiseerror('dates equal',20,-1) with log; Insert statements; 任意の助けをいただければ幸いです。

1
Microsoftはファイル数と並列処理に関してクエリオプティマイザーを変更しましたか
Microsoftはファイル数と並列処理に関してクエリオプティマイザーを変更しましたか?オプティマイザは、クエリの並列度を決定するためにファイル数を考慮しなくなりましたか?もしそうなら、誰がいつ変更が行われたか知っていますか?そうでない場合、そのトピックについて説明しているMicrosoftのドキュメント(SQL Server 2014または2016の現在のドキュメント)へのリンクを誰かが提供できますか?

3
データベースをバックアップすると、トランザクションログのサイズが小さくなりますか?
SQLデータベースに関する知識を集めようとしていますが、トランザクションログファイル(LDF)について質問があります。 まず、データベースを作成するときに、データベースとログファイルの両方の初期ファイルサイズを定義する必要があります。私が見ることができることから、ディスク上にファイルが作成されると、データベースに実際のデータがあるかどうか、またはトランザクション(ログ)があるかどうかに関係なく、指定されたサイズになります。 私の理解は、データベースをバックアップすることでした: トランザクションログを切り捨てます。 サイズを縮小します 内部のログを「空にする」ことによる、ディスク上のLDFファイルの削除。 ログファイルのサイズが固定されているように見えるため、これを正しく理解していないようです。私の実際の質問は次のようになります: ログの切り捨ては実際にログファイル(LDF)に対して何をしますか?このプロセスは、ディスクがいっぱいになるのを防ぐためのものです。 一部の概念を正しく理解していない場合は、修正してください。 ありがとうございました!


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

4
クエリの複数の列で同じテーブル値関数を呼び出す最も効率的な方法
同じテーブル値関数(TVF)が20列で呼び出されるクエリを調整しようとしています。 最初に行ったのは、スカラー関数をインラインテーブル値関数に変換することでした。 CROSS APPLYクエリの複数の列で同じ関数を実行するために最高のパフォーマンスを発揮する方法を使用していますか? 単純な例: SELECT Col1 = A.val ,Col2 = B.val ,Col3 = C.val --do the same for other 17 columns ,Col21 ,Col22 ,Col23 FROM t CROSS APPLY dbo.function1(Col1) A CROSS APPLY dbo.function1(Col2) B CROSS APPLY dbo.function1(Col3) C --do the same for other 17 columns より良い代替案はありますか? X個の列に対して複数のクエリで同じ関数を呼び出すことができます。 これが関数です: CREATE …

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か?

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