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

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

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 …

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

4
database_scoped_configurationsのバグ
私は結果セットを挿入しようとしています: SELECT * FROM sys.database_scoped_configurations サーバー上のすべてのデータベースの設定を確認したいので、一時テーブルに入れます。だから私はこのコードを書きました: DROP TABLE IF EXISTS #h CREATE TABLE #h(dbname sysname, configuration_id INT, name sysname, value SQL_VARIANT, value_for_secondary SQL_VARIANT) EXEC sys.sp_MSforeachdb 'USE ?; insert into #h(dbname, configuration_id, name, value,value_for_secondary) SELECT ''?'' as dbname, * FROM sys.database_scoped_configurations D' SELECT * FROM #h H ただし、データベースごとに1行しかなく、各データベースで単純な選択を実行すると予想される4行はありません。 これをコード化するには、sp_MSForEachDBを使用するよりも優れた方法があることを知っているので、いくつか試しました。しかし、データベースごとに1行しか取得できません。SQL Server 2016 …

2
インストール後にSQL Serverネットワーク構成ノードが構成マネージャーに表示されない
Windows 2012 R2 Datacenter 64ビットを実行しているサーバーがあります。SQL 2016 RC3を問題なく使用していたので、MSDNのRTMビルドに置き換えたいと思います。 RC3をアンインストールしてからRTMをインストールした後、サーバーにリモートで接続できませんでした。調べたところ、「SQL Serverネットワーク構成」のノードがないことがConfiguration Managerで確認できました。32ビットバージョンがリストされ、TCP / IPが有効になっています。この不足しているノードをインストールするにはどうすればよいですか? SQLブラウザーサービスを開始し、2016インストールを修復しようとしました。この不足しているコンポーネントを復活させるものは何もないようです。 RC3とRTMのインストールの一部が残っており、アンインストールできないことが興味深いです。これが適切かどうかはわかりません。SQL Serverのアンインストールに関するMicrosoftの指示に従って、すべてが正しく行われたように感じました。


2
SQL Server:すべての列を含むインデックスをカバーしていますか?
私たちのチームは、アプリケーションと関連するデータベースを継承しています。以前の開発者は、すべてのテーブルのすべてのインデックスにINCLUDE句があり、それ以外の場合はキーの一部ではないすべての列を常に追加するというルールを適用しているようです。これらのテーブルには、平均して2〜5個のインデックスまたは一意の制約と外部キーがあります。 アクセスはデフォルトで(常にではないが)すべての列を取得するORMを介して行われるため、データベースでスローされるクエリに関係なく、SELECTのパフォーマンスを向上させることを目的としています。これの副作用は、ストレージ要件の増加(おそらく大幅に増加する)とINSERT / UPDATE / DELETEの追加のオーバーヘッド時間であると予想されます。 問題は、これは賢明な戦略ですか?私たちのチームにはSQL Serverの履歴がありますが、内部の動作について専門家であると考えるメンバーはいません(ただし、この戦略が最適だった場合、今のところデフォルトではないのではないかという質問が出されました)。他にどのような副作用(データベースサーバーのCPU /メモリ/ TempDBの使用など)が予想されますか、または上記の仮定の一部が正しくありませんか? さらに、アプリケーションは、オンプレミスのSQL Server(2012年以降のバージョン)とAzure SQLの両方にインストールできます-この結果として、2つの違い、またはAzureへの追加の副作用に備えておく必要があります。アプローチ?

1
SQL Serverクエリストアはパラメーター値をキャプチャしますか?
SQL Server 2016で導入された新しいクエリストアは素晴らしいです。これは、以前のプロファイラーツールで行っていた処理の多くを置き換えるのに最適です。ただし、リソースを大量に消費するクエリへの個々の呼び出しに関連するパラメータ値をキャプチャして、それを傍受する方法は見つかりませんでした。これは可能ですか? Query Storeは個別の呼び出しよりも集計データを扱うことを理解しているので、ここでは運が悪いのではないかと思います。遅いクエリを見つけたとき、最も遅い呼び出しの1つに関連付けられたパラメータも持つとトラブルシューティングに便利です。最新の優れたツールを使用してこれを行う方法を知りたいのですが。(プロファイラーの使用をお見逃しなく!) セキュリティの観点から、Query Storeはプロファイラーよりもロックダウンされていますか?集計を計算するには、あるレベルで個々の呼び出しからデータをキャプチャする必要があると思います。それのいずれかが格納されているかどうかはわかりません。

1
使用されているデータベースミラーリングプロトコルのTCPポート。1つのデフォルト、1つのダイナミック?
SQL Server Always On可用性グループ™のプライマリ/セカンダリレプリカで以下のクエリを実行する場合 SELECT DISTINCT local_tcp_port,protocol_type,num_reads,num_writes FROM sys.dm_exec_connections WHERE local_net_address is not null; 2つのローカルTCPポートは、データベースミラーリングプロトコルに現れ、5022&63420 Server Name local_tcp_port protocol_type num_reads num_writes ServerName 5022 Database Mirroring 102942598 5 ServerName 63420 Database Mirroring 5 89655349 5022これはミラーリングエンドポイントとして構成された一つであるとポートが、期待されています。 もう1つは動的ポートのようですが、なぜこのポートを使用するのですか。 1つは多数の読み取り(5022)を示し、もう1つは多数の書き込み(63420)を示しているという事実と関係があるのでしょうか。 ビルドバージョン:13.0.5264.1

3
DBテーブルでのSPIDの使用(テーブル変数の代わり)
予約に使用されるトランザクションデータベース... 私たちのベンダーは、#temptablesを@tablevariablesに置き換えるように依頼されました(コンパイルロックが重いため)。代わりに、SPIDを列として追加する実際のテーブルに置き換えて、ストアドプロシージャが適切な行でのみ機能するようにしました。 この操作方法にリスクはありますか?すべてのトランザクションが独自のトランザクション内に分離される前に...このテーブルを大量にロックしてしまうのではないかと心配しましたが、SQLは行レベルのロックを使用しているため、これ以上のロックは作成されないというのが彼らの意見です。 SQL Serverバージョン:2016 Enterprise-13.0.5216.0 CREATE TABLE dbo.qryTransactions ( ID int IDENTITY (0,1) NOT NULL CONSTRAINT pk_qryTransactions PRIMARY KEY CLUSTERED, spid int NOT NULL, OrderID int, ItemID int, TimeTransactionStart datetime, TimeTransactionEnd datetime, ...other fields ) CREATE INDEX idx_qryTransactions_spidID ON qryTransactions (spid, ID) INCLUDE (ItemID, OrderID, TimeTransactionStart, TimeTransactionEnd)

1
自動的に作成されたNT AUTHORITYおよびNT SERVICEアカウントを削除する
そのため、最近ジョブを移動しました。新しいSQL Serverのインストール用のビルドスクリプトで見つけたコードの一部を以下に示します。 IF EXISTS ( SELECT * FROM [sys].[syslogins] WHERE [name] = N'NT AUTHORITY\SYSTEM' ) BEGIN DROP LOGIN [NT AUTHORITY\SYSTEM]; END IF EXISTS ( SELECT * FROM [sys].[syslogins] WHERE [name] = N'NT SERVICE\SQLWriter' ) BEGIN DROP LOGIN [NT SERVICE\SQLWriter]; END IF EXISTS ( SELECT * FROM [sys].[syslogins] WHERE [name] = …

4
SQL Server 2016の移植性を最大化するためのベストプラクティス
ソリューションのプロトタイプを開発する場合、多くの場合、テクノロジーはまだ決定されておらず、完成品で使用されるものと同じではない可能性があります。 このシナリオでは、別のサーバーへの最終的な移行を簡略化するために、Microsoft SQL Serverを使用してクエリをできるだけ標準的に作成する傾向があります。 SQL Serverで直接、またはSQL Server Management Studio(SSMS)を介して、T-SQLダイアレクトを介した標準SQLの使用を強制する方法またはいくつかの既知の方法はありますか?

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ドライブがいっぱいになります。数時間後に再起動してみて、問題が解決するかどうか確認してください。投稿し続けます。 ありがとう、ネイト

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 …

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