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

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

1
シーケンス-キャッシュなしvsキャッシュ1
SQL Server 2012+で宣言さSEQUENCEれた使用NO CACHEと宣言された使用の間に違いはありCACHE 1ますか? シーケンス#1: CREATE SEQUENCE dbo.MySeqCache1 AS INT START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 9999 NO CYCLE CACHE 1; GO シーケンス#2: CREATE SEQUENCE dbo.MySeqNoCache AS INT START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 9999 NO CYCLE NO CACHE; GO 2つの間に違いはありますか?SQL Server 2012+環境で使用される場合、それらは異なる動作をしますか?

3
統計更新のためのサンプルサイズによる奇妙な動作
SQL Server(2012)の統計情報の更新を使用してサンプリングのしきい値を調査し、いくつかの奇妙な動作に気付きました。基本的に、サンプリングされる行の数は、同じデータセットであっても、状況によって異なるようです。 このクエリを実行します。 --Drop table if exists IF (OBJECT_ID('dbo.Test')) IS NOT NULL DROP TABLE dbo.Test; --Create Table for Testing CREATE TABLE dbo.Test(Id INT IDENTITY(1,1) CONSTRAINT PK_Test PRIMARY KEY CLUSTERED, TextValue VARCHAR(20) NULL); --Insert enough data so we have more than 8Mb (the threshold at which sampling kicks in) INSERT INTO …

3
ナチュラルキーは、代理整数キーよりもSQL Serverで高いまたは低いパフォーマンスを提供しますか?
私はサロゲートキーのファンです。私の発見が確認バイアスのリスクがある。 こことhttp://stackoverflow.comの両方で見た多くの質問では、IDENTITY()値に基づく代理キーの代わりに自然キーを使用しています。 コンピューターシステムの私のバックグラウンドは、整数の比較演算を実行すると、文字列を比較するよりも高速になることを教えてくれます。 このコメントは私の信念に疑問を投げかけたので、整数はSQL Serverのキーとして使用する文字列よりも高速であるという仮説を調査するシステムを作成すると思いました。 小さなデータセットでは識別可能な差はほとんどないため、プライマリテーブルに1,000,000行、セカンダリテーブルにプライマリテーブルの各行に10行、合計で10,000,000行の2つのテーブル設定を考えました。二次テーブル。私のテストの前提は、このような2つのテーブルセットを作成することです。1つは自然キーを使用し、もう1つは整数キーを使用し、次のような簡単なクエリでタイミングテストを実行します。 SELECT * FROM Table1 INNER JOIN Table2 ON Table1.Key = Table2.Key; 以下は、テストベッドとして作成したコードです。 USE Master; IF (SELECT COUNT(database_id) FROM sys.databases d WHERE d.name = 'NaturalKeyTest') = 1 BEGIN ALTER DATABASE NaturalKeyTest SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE NaturalKeyTest; END GO CREATE DATABASE NaturalKeyTest ON …

2
ユーザー接続の最大数
SQL Server 2012 Standardエディションでは、ユーザー接続の最大数が32,767であることを知っています。この番号に向かっている場合、DBAとして何をすべきですか? 現在、30,000のユーザー接続があり、この数は増加すると予想されます。

9
T-SQLを使用して、文字列が回文であるかどうかをテストします
私はT-SQLの初心者です。入力文字列が回文であるかどうかを判断します。回文がそうでない場合はoutput = 0、そうでない場合はoutput = 1です。私はまだ構文を理解しています。エラーメッセージも表示されません。T-SQLがどのように機能するかについてのより良い理解と知識を獲得し、より良くなるために、さまざまなソリューションとフィードバックを探しています-私はまだ学生です。 私が見ているように、鍵となるアイデアは、左端と右端の文字を互いに比較し、等しいかどうかを確認し、次に左から2番目の文字と最後から2番目の文字を比較することです。ループを実行します。文字が互いに等しい場合、続行します。最後に到達した場合は1を出力し、そうでない場合は0を出力します。 批判してください: CREATE function Palindrome( @String Char , @StringLength Int , @n Int , @Palindrome BIN , @StringLeftLength Int ) RETURNS Binary AS BEGIN SET @ n=1 SET @StringLength= Len(String) WHILE @StringLength - @n >1 IF Left(String,@n)=Right(String, @StringLength) SET @n =n+1 SET @StringLength =StringLength -1 …

2
「CONCAT」は認識される組み込み関数名ではありません
クライアントからSQL Server 2012で実行されていることが報告されましたが、最終的な配信の前にテスト用のテストクエリをいくつか配信しました。 「CONCAT」は、認識される組み込み関数名ではありません。 CONCAT()これは、SQL Server 2012で導入された新しい組み込み関数であり、すべて問題なく機能していることを理解していますが、「クエリを実行するユーザーは、 Transact-SQLを実行する権限があります。」したがって、クライアントには、PRODとは異なるバージョンのSQL ServerがDEVにインストールされている可能性が高いことを証明しています。 SELECT/EXECUTE組み込みスカラー値関数のアクセス許可を明確に拒否することに関する情報を見つけることができませんが、それは可能ですが、もしそうなら、ユーザーは同じエラーテキストを受け取りますか?

4
Windows認証を使用すると、SQL Server Management Studioの接続が遅くなるかタイムアウトになる
Windows認証を使用してTCP経由でSQL Server 2012インスタンスに接続しようとすると、SQL Server Management Studio 2014で非常に長い遅延(10〜30秒)が発生します。これは、オブジェクトエクスプローラーまたは新しい空のクエリウィンドウを接続するときに発生します。接続すると、クエリの実行が高速になります。SQL Server認証を使用して接続する場合、問題は発生しません。 環境: Windows 7、ドメインユーザーとしてログイン IPアドレスを介したTCP接続(ホスト名ではない) サーバーは、VPN経由で接続されたリモートロケーションにあります 暗号化なし ドメインアカウントで同僚のWindows 7コンピューターにログインし、同じVPNを介して同じSQL Serverに接続した場合、遅延はありませんでした。同じ同僚が自分のドメインアカウントでPCにログインすると、遅延が発生しました。これらのテストは、問題が私のPCに固有であることを示しています。また、この特定のSQL ServerおよびVPNに接続するときにのみ問題が発生します。Windows認証を介して、ローカルネットワーク上の他のSQL Serverに遅滞なく接続できます。 私が成功せずに試したもの: 無効化されたウイルス対策およびファイアウォール 「%userprofile%\ AppData \ Roaming \ Microsoft \ SQL Server Management Studio」の下の「12.0」フォルダーの名前を「_12.0」に変更して、SSMSにユーザー設定を再作成させました。 ネットワークプロトコルをTCPではなくTCPに強制します<default>。名前付きパイプも試しましたが、サーバーはそのためにセットアップされていません。 SSMS 2012をインストールし、2014の代わりに試してみました。 無効なIPv6 etc \ hostsファイルでcrl.microsoft.comを127.0.0.1にブラックホールしました。 SSMS、Visual Studio、およびWindowsのカスタマーエクスペリエンス向上プログラムを無効にしました。 すべてのSQL Server関連アプリをPCからアンインストールし、2012年に再インストールしました。 TCPViewの手がかり: TCPViewを使用して、新しい接続を作成するとすぐに状態がESTABLISHEDになりますが、SQL Serverとの1つまたは2つ以上の接続が継続的に試行され、TIME_WAITで閉じられることに気付きました。同僚のコンピューターでは、これらの接続は確立されており、しっかりしています。だから、これがタイムアウトの原因であると確信していますが、接続は何のためであり、なぜ失敗するのですか?(SSMSにはアドオンがありません。) 何か案は? 更新:Intellisense /オートコンプリートの手掛かり(?): ついに接続したら、Intellisense …

2
SQL ServerのREAD COMMITTED SNAPSHOTとSNAPSHOT
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 6年前に移行され ました。 私はSQL Server READ COMMITTED SNAPSHOTとSNAPSHOT分離レベルの違いを調査していて、次のリソースに出会いました。 行バージョン管理ベースの分離レベルの選択 ほとんどのアプリケーションでは、次の理由から、スナップショットアイソレーションよりも行バージョン管理を使用したコミットコミットアイソレーションをお勧めします。 スナップショット分離よりも少ないtempdbスペースを消費します。 スナップショットアイソレーションは、行のバージョン管理を使用した読み取りコミットアイソレーションには適用できない更新の競合に対して脆弱です。スナップショット分離で実行されているトランザクションがデータを読み取ってから別のトランザクションで変更されると、スナップショットトランザクションによる同じデータへの更新により更新の競合が発生し、トランザクションが終了してロールバックされます。これは、行のバージョン管理を使用した読み取りコミット分離の問題ではありません。 私はこれらのトピックにやや不慣れですが、上記のリンクから2つの箇条書きを理解できないようです。 これらのモードでtempdbスペースが異なるのはなぜですか?一方は他方よりも詳細なバージョン管理を保存しますか? スナップショット分離は、更新の競合に対してより脆弱なのはなぜですか?


5
SSMSの大文字キーワードを作成する方法
私は最近のMySQL Workbenchを使用した場合の管理Studio 2012を使用して開始した、便利な機能は、私が下部ケースと(のような任意の予約語ですべてを保つことができるということでしたSELECT、INSERT自動的に大文字に変換します)。この動作をSSMSで複製するにはどうすればよいですか?

1
0が空の文字列と等しいのはなぜですか?
次のT-SQLステートメントが返される理由1(true)を見つけるには、助けが必要です。 SELECT IIF( 0 = '', 1, 0) 誰かが動作の原因となっているANSIオプションなどを変更したと思いますSET ANSI_NULLS。 私の問題は、いくつかの値を結合していることです。最終行セットには、結合される値0と''値がありますが、これは正しくありません。

1
インデックスを再構築するときにsort_in_tempdbを使用する場合
DWテーブルにSORT_IN_TEMPDBオプションを使用するかどうかを議論しています。私の理解では、このオプションを使用した場合、書き込みはより多くなりますが、それらはよりシーケンシャルです。SANがあります(これは時々悪名高くなっています)。この場合、書き込みの数を可能な限り制限したいと思います。tempdbは別のLUN(ディスクのセット)上にあると思います。 データファイルとtempdbファイルに十分なディスク領域があります。この場合、SORT_IN_TEMPDBを使用するメリットはありますか? 私を驚かせたのは、この回答に対するこのコメントです インデックスを再構築する場合、ソートにインデックスの2倍のスペース+ 20%が必要になります。したがって、一般に、データベース内のすべてのインデックスを再構築するには、データベース内の最大インデックスの120%のみが必要です。SORT_IN_TEMPDBを使用する場合、20%しか勝ちませんが、データファイルにはさらに100%が必要です。さらに、tempdbでsortを使用すると、データファイルに1回インデックスを書き込む代わりに、tempdbに1回書き込み、データファイルに書き込むため、IO負荷が大幅に増加します。だから、それは常に理想的ではありません。 SANの構成が遅い/構成が間違っている可能性があるため、IO負荷を絶対に増やしたくありません。 これをテストする最良の方法は何でしょうか?オプションを使用して、または使用せずにテーブルを再構築し、時間を記録するだけですか? 編集:8つのtempdbファイルがあり、それぞれ15GBです。TF 1117/1118フラグが設定されており、IFIが有効になっています。現在、sort_in_tempdbオプションを使用する場合と使用しない場合の再構築を混合しています。 ありがとう! SQL Server 2012エンタープライズ

4
TSQLでテーブル作成スクリプトを生成する方法はありますか?
T-SQLのみで既存のテーブルから作成スクリプトを生成する方法はありますか(T-SQLはSMOにアクセスできないため、SMOを使用しません)。テーブル名を受け取り、指定されたテーブルの作成スクリプトを含む文字列を返すストアドプロシージャがあるとしますか? これにアプローチする別の方法があるかもしれないので、今私が直面している状況を説明させてください。数十のデータベースを持つインスタンスがあります。これらのデータベースはすべて同じスキーマ、すべて同じテーブル、インデックスなどを持っています。これらは、サードパーティのソフトウェアインストールの一部として作成されました。アドホックな方法でデータを集約できるように、それらを操作する方法が必要です。dba.seの素敵な人々がここですでに私を助けてくれました別のデータベースにトリガーを作成する方法は? 現在、すべてのデータベースのテーブルから選択を行う方法を見つける必要があります。という名前のテーブルにすべてのデータベース名を記録し、Databaseesそれらすべてに対してselectステートメントを実行する次のスクリプトを作成しました。 IF OBJECT_ID('tempdb..#tmp') IS NOT NULL DROP TABLE #tmp select * into #tmp from Database1.dbo.Table1 where 1=0 DECLARE @statement nvarchar(max) = N'insert into #tmp select * from Table1 where Column1=0 and Cloumn2 =1' DECLARE @LastDatabaseID INT SET @LastDatabaseID = 0 DECLARE @DatabaseNameToHandle varchar(60) DECLARE @DatabaseIDToHandle int SELECT TOP …

1
SQL Server 2012 Expressがサーバーで9.5GBのRAMを使用するのはなぜですか?
SQL Server 2012 Expressをプライマリデータストアとして埋め込む予定のアプリケーションを構築しています。開発マシン(3GB RAMのWin7-32​​)でテストするときsqlservr.exe、公開されたハードウェアのスケーリング制限から予想されるように、1GBを超えるRAMを使用するプロセスを観察しませんでした、SQL ServerのExpressエディションの。 次に、アプリケーションをサーバーグレードのマシン(16 GB RAMを搭載したWin Server 2008R2 64ビット)に移動して、そこでパフォーマンスを評価しましたが、 sqlservr.exeプロセスが約9.5 GBのRAMに急速に拡大し、そこに留まったことがわかりました。 数回再起動して、効果があるかどうかを確認しましたが、毎回、プロセスは急速に〜9.5GBに戻りました。これで、SQL Server ExpressでRAMを使用できるようになりましたが、これが予想される動作であるかどうかを知りたいので、不適切なRAM使用量に基づくパフォーマンスレベルに依存することはありません。 参考までに、サーバーマシン上のSQL ServerのバージョンSELECT @@VERSIONは次のとおりです。 Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) Oct 19 2012 13:38:57 Copyright (c) Microsoft Corporation Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) 9.5GBの数値は、タスクマネージャーの「プライベートワーキングセット」の数値から取得されました。DBCC …

1
CREATE INDEX…WITH ONLINE = ONが数分にわたってテーブルへのアクセスをブロックするのはなぜですか?
既存のテーブルがあります: CREATE TABLE dbo.ProofDetails ( ProofDetailsID int NOT NULL CONSTRAINT PK_ProofDetails PRIMARY KEY CLUSTERED IDENTITY(1,1) , ProofID int NULL , IDShownToUser int NULL , UserViewedDetails bit NOT NULL CONSTRAINT DF_ProofDetails_UserViewedDetails DEFAULT ((0)) ); このテーブルには150,000,000行があります。システムは24時間365日稼働しているため、定期的にメンテナンスウィンドウが発生することはありません。 テーブルにインデックスを追加したいのですが、SQL ServerのEnterpriseエディションでは、テーブルへの書き込みアクセスをブロックせずにインデックスを追加できるはずです。使用したコマンドは次のとおりです。 CREATE INDEX IX_ProofDetails_ProofID_Etc ON dbo.ProofDetails (ProofID, IDShownToUser) INCLUDE (UserViewedDetails) WITH (ONLINE=ON , ALLOW_ROW_LOCKS=ON , …

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