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

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

2
DBCC FREEPROCCACHEもDBCC FREESYSTEMCACHE( 'SQL Plans')もCACHESTORE_SQLCPメモリを解放するために何もしません
CACHESTORE_SQLCP SQLプランは、数日後に38 GBを超えます。 「アドホックワークロード用に最適化」オプションをオンにして既に実行しています。(Entity Frameworkとカスタムレポートにより、多くのアドホックが作成されます!) マルチAZミラーリングを使用するAWS RDS上のSQL Server 2016 SE 3.00.2164.0.v1 実行すると: DBCC FREESYSTEMCACHE('SQL Plans'); または DBCC FREEPROCCACHE または DBCC FREESYSTEMCACHE ('SQL Plans') WITH MARK_IN_USE_FOR_REMOVAL または DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL; それをクリアしていないようです: SELECT TOP 1 type, name, pages_kb FROM sys.dm_os_memory_clerks ORDER BY pages_kb desc type name pages_kb CACHESTORE_SQLCP SQL Plans …

1
差分バックアップの問題-なぜですか?これは可能ですか?
私はSQL Server 2014を使用していますが、これは状況です: サーバーAとサーバーBがあります。 夜間ETLはサーバーAで処理されます。 ロードプロセスが完了した後、データベースXは(と、バックアップされるCHECKSUMとRESTORE VERIFYONLY信頼性を確保するため)、その後、サーバBに送信されます サーバーBはbakファイルを受信し、データベースをそこに復元します。 差分バックアップ戦略を使用して、次のことを行います。 完全バックアップは土曜日にのみ行わ れます。つまり、土曜日にサーバーAの完全バックアップ->サーバーBに出荷->サーバーBの完全バックアップを復元します。 残りの日は差分バックアップ、 つまりサーバーAの差分バックアップ->サーバーBに出荷->サーバーBの差分バックアップを復元します 試しましたが、エラーが発生しました: ロールフォワードの準備ができているファイルがないため、ログまたは差分バックアップを復元できません。 理由はわかりません。sys.database_filesサーバーAとサーバーB を確認しましたが、differential_Base_LSNとdifferential_base_GUIDは同じであることがわかります。どこでも/他に確認するものはありますか? ちなみに、上記の手順2でサーバーBの差分バックアップを復元する場合、毎回完全バックアップと差分バックアップの両方を常に復元する必要がありますか? WITH RECOVERY完全バックアップは前日にすでに復元されているため、差分バックアップのみを復元しました(そしてそのエラーメッセージが表示されました)。 明確にするために:はい、サーバーBのデータベースを差分間で読み取り可能にします。どうすればそれを回避できますか?毎晩RESTORE FULL (WITH NORECOVERY)+ RESTORE DIFF (WITH RECOVERY)コンボシーケンスを行う唯一のオプションはありますか? どんなガイダンスでも大歓迎です。

1
クエリ実行時の低メモリ状態をシミュレートする方法
低メモリ状態でのSQL Serverの実行エンジンの動作をよりよく理解しようとしています。メモリ付与の観点から言えば、GrantedMemoryに等しくなるように強制する方法があるかどうか疑問に思っていRequiredMemoryます。(私の推測では、それを行うための文書化されていないトレースフラグがあります。誰がそれを知っていますか?)

1
メモリ最適化テーブルを使用したSQL Server 2016の不適切な動作
次のSQLクエリをご覧ください。 CREATE TYPE dbo.IN_MEMORY_TABLE_TYPE AS TABLE ( source_col INT NULL, target_col INT not NULL INDEX ix_InMemoryTable NONCLUSTERED (target_col) ) WITH (MEMORY_OPTIMIZED = ON) GO DECLARE @t dbo.IN_MEMORY_TABLE_TYPE INSERT @t ( source_col, target_col ) VALUES (10, 0), (0, 0) UPDATE r1 SET target_col = -1 FROM @t r1 WHERE EXISTS ( …

3
1時間ごとにMS SQL Studioでクエリを自動的に実行する
私は大企業のアプリケーションをサポートしています。私の役割の1つはデータのクリーンアップです。1時間ごとに実行する必要があるクエリがあり、それを自動化する必要があります。組織ポリシーのため、SQL Serverエージェントジョブを作成したり、スキーマを変更したりすることはできません。データを操作することしかできません。 終わりのない WHILE(1=1) BEGIN WAITFOR DELAY '01:00'; --do work END 私のために仕事をしますが、私はパーマオープン接続の考えで肩をすくめます。 理想的には、MS SS自体のスクリプトを作成して1時間ごとに特定のコードを実行しますが、それが可能かどうかはわかりません。 この問題の解決策はありますか?

3
LIKE文字の長さ制限を克服する
ここでこのLIKE文字の長さの制限を読むと、LIKE句で〜4000文字より長いテキストを送信できないように見えます。 特定のクエリのクエリプランキャッシュからクエリプランをフェッチしようとしています。 SELECT * FROM sys.dm_exec_cached_plans AS cp CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) AS qp CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle) AS st where st.text like '%MY_QUERY_LONGER_THAN_4000_CHARS%' ESCAPE '?' 内のクエリLIKEが4000文字より長い場合、クエリがキャッシュプランに含まれていても結果は0になります。(少なくともエロルが予想されていました)。 この問題を回避する方法はありますか?> 10000charsの長さのクエリがあり、> で検索できないようLIKEです。

2
外部キーの削除に時間がかかるのはなぜですか?
次のように、一度に1つずつ、データベースからすべての外部キーを削除するスクリプトを作成しました。 ALTER TABLE MyTable1 DROP CONSTRAINT FK_MyTable1_col1 ALTER TABLE MyTable2 DROP CONSTRAINT FK_MyTable2_col1 ALTER TABLE MyTable2 DROP CONSTRAINT FK_MyTable2_col2 私が驚いたのは、スクリプトに時間がかかることです。DROPFKごとに平均20秒です。今、私はFKを作成することは大したことかもしれないことを理解しています、なぜならサーバーはFK制約が最初から侵害されていないことを確認しなければならないからです?時間がかかるFKをドロップするとき、サーバーは何をしますか?これは私自身の好奇心のためであり、物事をより速くする方法があるかどうかを理解するためです。FKを(単に無効にするだけでなく)削除できると、移行中にはるかに高速になり、したがってダウンタイムを最小限に抑えることができます。

1
Perfmonカウンターの「次善の計画/秒」は実際に何を測定しますか?
SQL Serverでは、Perfmonカウンターの「ワークロードグループの統計:次善の計画/秒」は何を測定しますか? これはリソースガバナーカウンターの1つであるため、ワークロードグループで測定されます(RGを構成するかどうかに関係なく、ユーザーはこれを使用します)。 何が良い計画か悪い計画かを尋ねるのではなく、その対抗策は具体的に何であり、正確な対応する計画をどこで見つけますか?たとえば、「準最適なプラン/秒」カウンターをトリガーするクエリに一致すると思われる拡張イベントには何も見つかりません。
13 sql-server 

2
SQL Server 2016の空間データ用のMakeValid()の代替
LINESTRINGOracleからSQL Serverに移行する地理データの非常に大きなテーブルがあります。Oracleのこのデータに対して実行される評価は多数あり、SQL Serverのデータに対しても実行する必要があります。 問題:SQL ServerにはLINESTRING、Oracleよりも有効な要件が厳しい。「LineStringインスタンスは、2つ以上の連続したポイントの間隔で自身をオーバーラップさせることはできません」。LINESTRINGsの パーセンテージがその基準を満たしていないということが起こります。つまり、データを評価するために必要な関数が失敗します。データを調整して、SQL Serverで正常に検証できるようにする必要があります。 例えば: LINESTRINGそれ自体に倍増する非常にシンプルな検証: select geography::STGeomFromText( 'LINESTRING (0 0 1, 0 1 2, 0 -1 3)',4326).IsValidDetailed() 24413: Not valid because of two overlapping edges in curve (1). MakeValidそれに対して関数を実行する: select geography::STGeomFromText( 'LINESTRING (0 0 1, 0 1 2, 0 -1 3)',4326).MakeValid().STAsText() LINESTRING (0 -0.999999999999867, 0 0, …

4
最初の1億個の正の整数を文字列に変換するにはどうすればよいですか?
これは、実際の問題から少し逸脱しています。コンテキストの提供が役立つ場合、このデータの生成は、文字列の処理方法のパフォーマンステスト、カーソル内で何らかの操作を適用する必要がある文字列の生成、または機密データの一意の匿名名の置換の生成に役立ちます。SQL Server内でデータを効率的に生成する方法に興味があるだけです。このデータを生成する必要がある理由を尋ねないでください。 ある程度正式な定義から始めようと思います。文字列は、A〜Zの大文字のみで構成される場合、シリーズに含まれます。シリーズの最初の用語は「A」です。シリーズは、最初に長さ、2番目に一般的なアルファベット順でソートされたすべての有効な文字列で構成されます。文字列がという列のテーブルにあるSTRING_COL場合、順序はT-SQLでとして定義できますORDER BY LEN(STRING_COL) ASC, STRING_COL ASC。 あまり正式ではない定義を行うには、Excelのアルファベット順の列ヘッダーを見てください。シリーズは同じパターンです。整数を基数26の数値に変換する方法を検討してください。 1-> A、2-> B、3-> C、...、25-> Y、26-> Z、27-> AA、28-> AB、... 「A」は10を基数とする0とは異なる動作をするため、類推は完全ではありません。以下に、選択した値の表を示します。 ╔════════════╦════════╗ ║ ROW_NUMBER ║ STRING ║ ╠════════════╬════════╣ ║ 1 ║ A ║ ║ 2 ║ B ║ ║ 25 ║ Y ║ ║ 26 ║ Z ║ ║ 27 ║ AA ║ …

1
「and」と「&」の違い
私は論理演算の優先順位を理解しようとしていますが、次のコードがあります: declare @T bit ='TRUE' declare @F bit ='False' print @T and @F そして、エラーを返します キーワード「and」付近の構文が正しくありません。 「and」を「&」に置き換えると、コードは再び機能します。前のコードが機能しなかったのはなぜですか?SQLサーバーを使用しています。
13 sql-server  t-sql 

1
SQL Serverがオブジェクト名とシステムプロシージャに渡される文字列を交換できる理由
オブジェクト名をシステムストアドプロシージャに渡すことが合法である原因は何sp_helptextですか? オブジェクト名を文字列に変換するメカニズムは何ですか? 例えば -- works sp_helptext myproc sp_helptext [myproc] sp_helptext [dbo.myproc] -- and behaves the same as a string sp_helptext 'myproc' sp_helptext 'dbo.myproc' -- does not work sp_helptext dbo.myproc -- Msg 102, Level 15, State 1, Line 1 incorrect syntax near '.' -- an additional case that does not work. …


1
SQL Server 2016のSUBSTRING()を含む述語の見積もりの​​変更?
SUBSTRING()または他の文字列関数を含む述語のカーディナリティを推定する方法に関するSQL Server 2016の変更に関するドキュメントまたは調査はありますか? 私が尋ねている理由は、互換モード130でパフォーマンスが低下したクエリを見て、SUBSTRING()の呼び出しを含むWHERE句に一致する行数の推定値の変更に関係した理由です。クエリの書き換えで問題を修正しましたが、SQL Server 2016のこの領域の変更に関するドキュメントを誰かが知っているかどうか疑問に思っています。 デモコードは次のとおりです。このテストケースでは推定値は非常に近いものですが、精度はデータによって異なります。 テストケースでは、compatレベル120ではSQL Serverは推定にヒストグラムを使用しているように見えますが、compatレベル130ではSQL Serverはテーブルの10%が固定されていると仮定しています。 CREATE DATABASE MyStringTestDB; GO USE MyStringTestDB; GO DROP TABLE IF EXISTS dbo.StringTest; CREATE TABLE dbo.StringTest ( [TheString] varchar(15) ); GO INSERT INTO dbo.StringTest VALUES ( 'Y5_CLV' ); INSERT INTO dbo.StringTest VALUES ( 'Y5_EG3' ); INSERT INTO dbo.StringTest VALUES ( 'ZY_NE' …

4
テーブル内のNULL値の自己比較
次のような不思議なt-sqlの振る舞いについて私はいつも困惑しています -- Create table t and insert values. use tempdb CREATE TABLE dbo.t (a INT NULL); -- insert 3 values INSERT INTO dbo.t values (NULL),(0),(1); GO set ansi_nulls off -- purposely turn off, so we can allow NULL comparison, such as null = null go -- expect 3 rows returned …

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