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

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

4
SSMS 2012でのT-SQLのフォーマット
このMicrosoftドキュメントによると: http://msdn.microsoft.com/en-us/library/ms174205.aspx ctrl + K、次にctrl + Dを使用してSQL Server Management Studio 2012でSQLドキュメントをフォーマットできるはずですが、そのコンボを使用するとエラーが発生します。 キーの組み合わせ(Ctrl + K、Ctrl + D)は、現在使用できないコマンド(ドキュメントのフォーマット)にバインドされています。 書式設定がまったくない既存のSQLドキュメントに変更を加えようとしているため、非常に読みにくくなっています。Format Codeコマンドを使用可能にする方法を誰もが知っているので、このコードをSQL形式にできますか?
39 sql-server  ssms 

1
SELECT INTOテーブルクエリのWHERE 1 = 2のポイントは何ですか
SQL Serverの既存のテーブルから新しいテーブルを作成する場合、次のことができます。 SELECT * into Table2 from Table1 WHERE 1=2 where句のポイントは何ですか?where句なしで試してみたところ、うまくいきました。私はインターネットの多くの例でこのwhere句を見てきましたが、それが必要な理由ではありません。
39 sql-server 

3
SQL Serverで新しいトレースフラグを見つける方法
そこには多くのトレースフラグがあります。十分に文書化されたものもあれば、そうでないものもあります。また、2016年のリリースでは、デフォルトの動作ステータスへの道を見つけたものもあります。公式のサポートチャネル、マイクロソフトの従業員などは別として、新しいトレースフラグを見つける方法は何ですか? Aaron Bertrandによる最近のいくつかの投稿をこことここで読みましたが、新しいTrace Flagsについては何も見当たりませんでした。 mssqlsystemresourceのデータとログファイルを新しい場所にコピーし、通常のデータベースのように添付してシステムテーブルとビューを調べましたが、すぐには何も見つかりませんでした。既知のトレースフラグのリストを取得し、そのリストにない番号をループして、DBCC TRACEONが許可するものを確認することを検討しましたが、最初にここで質問をしたいと思いました。 それらを有効にするDBCCコマンドは、トレースフラグが有効であることを確認するために何らかのリソースでチェックインする必要があると仮定すると、どこに到達しますか?リストを保持する.dllまたは他のシステムファイルはありますか? 私はこの質問が広範に及ぶことを知っていますが、これに拍車をかけたのは、説明された効果を持たない2016年の新機能とともに特定の意図された動作を備えたトレースフラグについて読んでいたことです。私の最初の考えは、おそらく7129が7219になるように、数が何らかの形で転置されたと考えていました。たとえば、7000-7999の範囲内で有効なトレースフラグのリストを取得して、順列を探すことでした。DBCC TRACEONフラグと起動パラメータの両方としてそれらすべてをテストすることは、機能の動作に対する結果のテストと組み合わせると非常に面倒です。

3
インデックスを作成するよりも統計を作成したほうがよいのはいつですか?
私は上の情報をたくさん発見したものを STATISTICS、次のとおりです。彼らは、彼らがクエリやインデックスから手動または自動で作成する方法を、維持、およびようにしていますか。しかし、私は見つけることができなかったいかなるに関するガイダンスや「ベストプラクティス」の情報それらを作成するには:インデックスからではなく、手動で作成されたSTATISTICSオブジェクトのほうがどのような状況にメリットがあるか。私は手動でフィルターされた統計を作成し、パーティション化されたテーブルのクエリを支援しました(インデックス用に作成された統計はテーブル全体をカバーし、パーティションごとではないためです-brillaint!)インデックスの詳細を必要とせず、インデックスを維持したり、ブロック/デッドロックの可能性を高めたりするコストも必要ありません。 @JonathanFiteはコメントで、インデックスと統計の違いについて言及しました。 インデックスは、テーブル自体とは異なる方法でソートされたルックアップを作成することにより、SQLがデータをすばやく見つけるのに役立ちます。統計は、クエリを満たすために必要なメモリ/労力をSQLが判断するのに役立ちます。 主に質問を明確にするのに役立つからです。 どのようにこのことを知っている(または上の任意の他の技術的な情報はないものを Sとどのように行動しての性質に関連sをSTATISTICS)助けを決定するとき選択するCREATE STATISTICS以上CREATE INDEXの関連が作成されますインデックスを作成するときに、特に、STATISTICSオブジェクトを?どのようなシナリオでは、よりよい持っていることによって提供されることになるだけ STATISTICS情報をしていないインデックスを持ちますか? 可能な場合、STATISTICSオブジェクトがに比べてより適しているシナリオの実用例があると、非常に便利INDEXです。 私は視覚的な学習者/思考者であるため、最適なタイミングを判断するのに役立つ可能性のある手段として、STATISTICSとINDEXes の違いを並べて確認すると役立つと思いSTATISTICSました。 Thingy PROs CONs ------- ---------- ------------------- INDEX * Can help sorts. * Takes up space. * Contains data (can * Needs to be maintained (extra I/O). "cover" a query). * More chances for blocking / dead-locks. STATISTICS …

6
Management Studio System.OutOfMemoryException
Microsoft SQL Server 2012を使用していて、Management Studio内で単純なクエリを実行しようとしています。次のエラーが表示されます(SSMSで、サーバーで実行中): バッチの実行中にエラーが発生しました。エラーメッセージは次のとおりです。タイプ 'System.OutOfMemoryException'の例外がスローされました。 システムには24GBのRAMがインストールされていますが、タスクマネージャーで見ると、sqlservr.exeプロセスは2.9GBしか使用していません。 RAMの使用を制限している設定はどこかにありますか?

1
データベースの単純または完全復旧モデル?
いつ完全復旧モデルを使用する必要があり、いつデータベースの単純復旧モデルを使用すればよいですか? デフォルトであるため、常に完全復旧モデルを使用しましたが、今日このエラーが発生しました: SQL Server用Microsoft OLE DBプロバイダー(0x80040E14)データベース 'DATABASE NAME'のトランザクションログがいっぱいです。ログ内のスペースを再利用できない理由を確認するには、sys.databasesのlog_reuse_wait_desc列を参照してください。 特定のデータベースは、実際にはサーバー上で最小かつ最も非アクティブなデータベースの1つであるため、他のデータベースではなく、このデータベースでログがいっぱいになる方法がわかりません。 ログを圧縮してデータベースに再度アクセスできるようにするには、次のコマンドを使用して、復旧モデルをFULLからSIMPLEに変更し、論理ファイルログを圧縮しました alter database myDbName SET recovery simple go dbcc shrinkfile('LOG FILE LOGICAL NAME', 100) go それは助けたが、今私が理解する必要がなぜ、それが助けHOWこの状況が開始され、どのように将来的にはこれを防ぐには? 編集: 毎晩1時に、サーバー上のすべてのデータベースのスクリプト化されたバックアップを行っています。これは、31行のスクリプトで行われています。最も重要な部分は set @Filename = 'D:\backup\' + convert(varchar, getDate(), 112) + ' - ' + @DBName + '.bak' set @Description = 'Full backup of database …

4
インデックスに列を含めるための厳格なルール
非クラスター化インデックスに含める列とその順序を決定するための厳格なルールはありますか?私はちょうどこの投稿https://stackoverflow.com/questions/1307990/why-use-the-include-clause-when-creating-an-index を読んでいて、次のクエリでそれを見つけました: SELECT EmployeeID, DepartmentID, LastName FROM Employee WHERE DepartmentID = 5 ポスターは、次のようなインデックスを作成することを提案しました。 CREATE NONCLUSTERED INDEX NC_EmpDep ON Employee(EmployeeID, DepartmentID) INCLUDE (Lastname) ここに、なぜこのようなインデックスを作成できないのかという質問があります CREATE NONCLUSTERED INDEX NC_EmpDep ON Employee( EmployeeID, DepartmentID, LastName) または CREATE NONCLUSTERED INDEX NC_EmpDep ON Employee( EmployeeID, LastName) INCLUDE (DepartmentID) そして、LastName列を含めることを決定するためにポスターを導くものは何ですか。他の列はなぜですか?そして、列をどの順序で保持するかをどのように決定するのですか?

6
サーバー上のすべてのDBに対してSQLを実行する方法
問題を診断するために、単一のサーバー上の複数のデータベースに対して実行するいくつかの標準SQLがあります。 select so.name, so.type, MAX(case when sc.text like '%remote%' then '' ELSE 'N' END) AS Relevant, @@ServerName as Server, DB_Name() as DBName from sysobjects so with (nolock) join syscomments sc with (nolock) on so.id = sc.id where (sc.text like '%emote%') group by so.name, so.type order by so.type, so.name 単一サーバー上のすべてのデータベースに対してこれを実行するにはどうすればよいですか?(手動で1つずつ接続して実行することに加えて)
38 sql-server 

4
専用のデータベースサーバーでは、OS用にどのくらいのメモリを予約しますか?
データベース機能専用の専用サーバーがあると仮定します。オペレーティングシステム用にどのくらいのメモリを確保する必要がありますか? これはおそらく、特定のOS、特定のデータベースソフトウェアなどによって多少異なると思います。しかし、メモリはデータベースのパフォーマンスにとって非常に重要であるため、ホストOSを枯渇させることなく、データベースに最大限の適切なレベルのメモリを持たせたいと考えています。 そう 手始めに良い経験則は何ですか? 行き過ぎて、ホストOSが何らかの形でデータベースに飢えているかどうかを判断するには、どのカウンタまたはパフォーマンスインジケータを調べる必要がありますか?

7
EXISTS(SELECT 1…)vs EXISTS(SELECT *…)どちらですか?
テーブル内の行の存在を確認する必要があるときはいつでも、次のような条件を常に書く傾向があります。 SELECT a, b, c FROM a_table WHERE EXISTS (SELECT * -- This is what I normally write FROM another_table WHERE another_table.b = a_table.b ) 他の人は次のように書きます: SELECT a, b, c FROM a_table WHERE EXISTS (SELECT 1 --- This nice '1' is what I have seen other people use FROM another_table …



4
ALLOW_SNAPSHOT_ISOLATIONおよびREAD_COMMITTED_SNAPSHOT
オンラインフォーラムと例のほとんどは、常に両方持つことをお勧めALLOW_SNAPSHOT_ISOLATIONしてREAD_COMMITTED_SNAPSHOT、誰かがスナップショット、行バージョン管理または類似の質問をされるたびにONに設定します。 どちらの設定でもSNAPSHOTという言葉は少し混乱するものと思います。データベースエンジンがREAD_COMMITTEDのデフォルトの動作にロックの代わりに行バージョン管理を使用するために、データベースREAD_COMMITTED_SNAPSHOTはどの設定に関係なく ONに設定されると考えましたALLOW_SNAPSHOT_ISOLATION。 ALLOW_SNAPSHOT_ISOLATION設定は、トランザクション(例えばSETトランザクション分離レベルのスナップショット)を起動するときだけスナップショット分離を可能にするために、ONに設定されているにかかわらずのREAD_COMMITTED_SNAPSHOT設定。 これらの2つの設定をONに設定する唯一の理由は、READ COMMITTED行のバージョン管理と スナップショット分離が必要な場合です。 私の質問は、私の理解が何らかの形で間違っているのですか?そして、これら2つの設定は常に一緒にONに設定する必要があります(特にREAD COMMITTED行バージョン管理の場合)?

8
SQL Serverエージェントのジョブと可用性グループ
SQL Server 2012可用性グループでスケジュールされたSQL Serverエージェントジョブを処理するベストプラクティスを探しています。たぶん何かを見逃したかもしれませんが、現在の状態では、SQL Server Agentはこの優れたSQL2012機能と実際には統合されていないと感じています。 スケジュールされたSQLエージェントジョブにノードの切り替えを認識させるにはどうすればよいですか?たとえば、1時間ごとにデータをロードするジョブをプライマリノードで実行しています。プライマリがダウンした場合、プライマリになったセカンダリでジョブをアクティブにするにはどうすればよいですか? セカンダリで常にジョブをスケジュールすると、セカンダリは読み取り専用であるため失敗します。

5
句のない巨大なDELETE FROM <table>を高速化する方法
SQL Server 2005を使用します。 where句のない巨大なDELETE FROMを実行しています。基本的にTRUNCATE TABLEステートメントと同等です-TRUNCATEの使用が許可されていないことを除きます。問題は、テーブルが巨大である-1000万行であり、完了するまでに1時間以上かかることです。以下なしで高速化する方法はありますか? 切り捨ての使用 インデックスを無効化または削除しますか? t-logはすでに別のディスクにあります。 どんな提案も歓迎します!

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