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

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

2
SQL Server 2016と2012の挿入パフォーマンス
同じサーバーに2つのSQL Serverインスタンスがあります。 Microsoft SQL Server 2012(SP1)-11.0.3000.0(X64)Standard Edition(64ビット) Microsoft SQL Server 2016(SP1-CU5)(KB4040714)-13.0.4451.0(X64)Enterprise Edition(64ビット) sp_configureの結果は、両方のインスタンスで同じです(新しい2016オプションを除く)。 同じディスクフォルダーの両方のインスタンスに新しいデータベースを作成しました。自動成長パラメータは同じです。 統計の自動作成および自動更新オプションはオフになっています。 次に、10000の挿入をヒープにテストしました。 set nocount on go create table dbo.TestInsert ( i int not null, s varchar(50) not null ) declare @d1 datetime, @d2 datetime, @i int set @d1 = getdate() set @i = 1 while @i …

2
FILESTREAMインサイダー情報の検索
FILESTREAM機能がMicrosoft SQL Server 2012でアクティブになると、SQL Serverはシステム上に「隠された」共有を作成します。共有は次のように定義されます。 Sharename FILESTREAM_SHARE Path \\?\GLOBALROOT\Device\RsFx0320\<localmachine>\FILESTREAM_SHARE Remark SQL Server FILESTREAM share Maximum users unlimited Users Caching Manual caching of documents Permissions NT-AUTHORITY\Authenticated Users, FULL 名前は、SQL Server構成マネージャーで FILESTREAMを最初に構成するときに指定する共有の名前です。しかし、それは何のためですか? これまでのところ 私はすべての利用可能なFILESTREAMドキュメントを以下から読みます。 FILESTREAM(SQLサーバー) FILESTREAMを有効にして構成する FILESTREAM対応データベースを作成する FILESTREAMデータを保存するためのテーブルを作成する ...および関連するすべて FILESTREAMと他のSQL Server機能との互換性 FILESTREAM DDL、関数、ストアドプロシージャ、およびビュー OpenSqlFilestreamを使用してFILESTREAMデータにアクセスする 紙SQL Server 2008の- SQL Server 2008のFILESTREAMストレージ 記事FILESTREAM(OLTP)---他の多くの資料を参照するミッションクリティカルなOLTPソリューションを設計するためのテクニカルリファレンスガイド ...しかし、その共有とその目的、またはその目的についての言及はありませんでした。名前を入力すると、SQL …

1
INSERTでWITH TABLOCKを使用する利点
状況INSERT INTO <tablename> (WITH TABLOCK)によっては、ロギングが最小限であるため、実行が高速になります。これらの状況には、BULK_LOGGED復旧モデルにデータベースを含めることが含まれます。 データベース(tempdb)が復旧モデルを使用しているときに、空のテーブルで使用することWITH TABLOCKでパフォーマンス上の利点は他INSERTにありますか?SIMPLE SQL Server 2012 Standard Editionを使用しています。 私のユースケースは、を使用してストアドプロシージャ内に一時テーブルを作成し、すぐにデータを取り込むINSERT...SELECTことです。私はそのようなtempdbの乱用を避けようとしますが、時々必要になります。 私は必要なケースを構築しようとしていますTABLOCK。それは何も傷つけないようで、利益があるかもしれません。コードベースのどこにでもそれを追加するのに十分な潜在的な利点があるかどうかを把握しようとしています。テーブルに書き込みたい他のプロセスがないと確信しています。 通常、クラスター化されたPKで新しく作成されたローカル一時テーブルに挿入しますが、時々ヒープを使用します。


2
特定の特殊文字のISNUMERICの背後にあるロジックは何ですか?
このISNUMERIC関数には予期しない動作があります。MSDNドキュメントには次のように書かれています。 ISNUMERIC入力式が有効な数値データ型に評価されると1を返します。有効な数値データ型には、int、bigint、smallint、tinyint、decimal、numeric、money、smallmoney、float、realが含まれます。 また、脚注もあります。 ISNUMERICプラス(+)、マイナス(-)などの数字ではない一部の文字、およびドル記号($)などの有効な通貨記号に対して1を返します。通貨記号の完全なリストについては、「money and smallmoney(Transact-SQL)」を参照してください。 わかりましたので+、-、と記載されている通貨記号は、数値と見なされることが期待されます。ここまでは順調ですね。 奇妙な部分です。まず、リンクされた記事の通貨記号の一部は数値ではありません。 ユーロ通貨記号、16進数20A0: ₠ ナイラサイン、ヘックス20A6: ₦ リアルサイン、16進FDFC: ﷼ これは奇妙で、なぜなのかわかりませんか?このバージョンまたは環境に依存していますか? しかし、物事は奇妙になります。私が説明できない他のいくつかはここにあります: /数値ではありませんが、\です(ハァッ!!) REPLICATE(N'9', 308)数値ですが、そうでREPLICATE(N'9', 309)はありません 最初の最も基本的な質問は、上記のケースを説明するものは何ですか?さらに重要なことですが、背後ISNUMERICにあるロジックは何ですか?したがって、すべてのケースを自分で説明/予測できますか? 物を再現する良い方法は次のとおりです。 DECLARE @tbl TABLE(txt NVARCHAR(1000)); INSERT INTO @tbl (txt) VALUES (N''), (N' '), (N'€'), (N'$'), (N'$$'), (NCHAR(8356)), (NCHAR(8352)), (NCHAR(8358)), (NCHAR(65020)), (N'+'), (N'-'), (N'/'), (N'\'), (N'_'), (N'e'), (N'1e'), (N'e1'), (N'1e1'), …

1
ロールdb_ownerで許可されること
SQL Server 2012データベースの特定のテーブルを表示できないログインのトラブルシューティングを試みました。そうすることで、私はそのdb_owner役割のメンバーシップが許可するものをよく理解していないことがわかります。などの他の役割を理解db_datareader and db_datawriterすることdb_ownerはできますが、何が許可されるかについては混乱したままです。

1
SQL Server 2012で仮想アカウントではなく管理されたサービスアカウントを使用する理由は何ですか?
SQL Server 2012のでは、サービスアカウントは、次のように作成された仮想口座説明するように、(VAS)ここでは対照的に、管理されたサービスアカウント(MSAは)。 説明に基づいて、これらについて見られる重要な違い: MSAはドメインアカウント、VAはローカルアカウントです MSAはADによって処理される自動マジックパスワード管理を使用し、VAにはパスワードがありません Kerberosコンテキストでは、MSAはSPNを自動的に登録しますが、VAは 他に違いはありますか?Kerberosが使用されていない場合、DBAがMSAを好むのはなぜですか? 更新:別のユーザーは、VAに関するMSドキュメントの矛盾の可能性に気付きました: 仮想アカウントは自動管理されており、仮想アカウントはドメイン環境のネットワークにアクセスできます。 対 仮想アカウントは、リモートロケーションに対して認証できません。すべての仮想アカウントは、マシンアカウントの権限を使用します。次の形式でマシンアカウントをプロビジョニングします <domain_name>\<computer_name>$。 「マシンアカウント」とは何ですか?どのように/いつ/なぜ「プロビジョニング」されますか?「ドメイン環境でネットワークにアクセスする」と「(ドメイン環境で)リモートロケーションに認証する」の違いは何ですか?

1
前の行までの合計
ウィンドウ関数に関するヘルプが必要です。ウィンドウ内の合計とウィンドウ内の現在の合計を計算できることを知っています。しかし、前の現在の合計、つまり現在の行を含まない現在の合計を計算することはできますか? ROWまたはRANGE引数を使用する必要があると思います。私はCURRENT ROWオプションがあることを知っていますが、私CURRENT ROW - 1は無効な構文である必要があります。ROWとのRANGE議論に関する私の知識は限られているので、どんな助けもありがたいことに受けます。 私は、この問題に対する多くのソリューションがあることを知っているが、私は理解しているよROW、RANGE引数を、私はこの問題は、これらにひび割れすることが可能と仮定します。以前の実行中の合計を計算する1つの可能な方法を含めましたが、もっと良い方法があるのではないかと思います。 USE AdventureWorks2012 SELECT s.SalesOrderID , s.SalesOrderDetailID , s.OrderQty , SUM(s.OrderQty) OVER (PARTITION BY SalesOrderID) AS RunningTotal , SUM(s.OrderQty) OVER (PARTITION BY SalesOrderID ORDER BY SalesOrderDetailID) - s.OrderQty AS PreviousRunningTotal -- Sudo code - I know this does not work --, SUM(s.OrderQty) OVER (PARTITION …

1
SOS_SCHEDULER_YIELD待機のトラブルシューティング
企業のERP(Dynamics AX 2012)を実行すると、実稼働環境が開発システムよりもはるかに遅いように見えました。 開発環境と実稼働環境の両方で同じアクティビティを実行し、トレースを実行した後、開発環境と比較して実稼働環境でのSQLクエリの実行が非常に遅いことを確認しました(平均で10〜50倍遅い)。 最初はこれをロードに起因すると考え、営業時間外に本番環境で同じアクティビティを再実行し、トレースで同じ結果を見つけました。 SQL Serverで待機統計をクリアし、しばらくの間、サーバーを通常の運用負荷で実行させた後、次のクエリを実行しました。 WITH [Waits] AS (SELECT [wait_type], [wait_time_ms] / 1000.0 AS [WaitS], ([wait_time_ms] - [signal_wait_time_ms]) / 1000.0 AS [ResourceS], [signal_wait_time_ms] / 1000.0 AS [SignalS], [waiting_tasks_count] AS [WaitCount], 100.0 * [wait_time_ms] / SUM ([wait_time_ms]) OVER() AS [Percentage], ROW_NUMBER() OVER(ORDER BY [wait_time_ms] DESC) AS [RowNum] FROM sys.dm_os_wait_stats …

1
インデックススプールの強制
パフォーマンス上の理由で避けるべきものを知っていますが、表示されないようにする方法のデモとして表示される状態を表示しようとしています。 ただし、インデックスが欠落しているという警告が表示されますが、オプティマイザーは一時インデックスを作成しないことを選択します。 私が使用しているクエリは SELECT z.a FROM dbo.t5 AS z WITH(INDEX(0)) WHERE EXISTS ( SELECT y.a FROM dbo.t4 AS y WHERE y.a = z.a ) OPTION (MAXDOP 1); テーブルスキーマは次のとおりです。 CREATE TABLE dbo.t4 ( a integer NULL, b varchar(1000) NULL, p varchar(100) NULL ); CREATE TABLE dbo.t5 ( a integer NULL, b …


3
ページ編集時にSQL Serverクエリが遅い
SQL Server 2012では、次のT-SQLクエリで奇妙な動作が見られます。 SELECT Id FROM dbo.Person WHERE CONTAINS(Name, '"John" AND "Smith"') ORDER BY Name このクエリを単独で実行すると、2秒未満で約1,300の結果が得られます(フルテキストインデックスがありますName)。 ただし、クエリをこれに変更すると: SELECT Id FROM dbo.Person WHERE CONTAINS(Name, '"John" AND "Smith"') ORDER BY Name OFFSET 0 rows FETCH NEXT 10 ROWS ONLY 10件の結果を得るには20秒以上かかります。 次のクエリはさらに悪いです。 SELECT Id FROM ( SELECT ROW_NUMBER() OVER (ORDER BY Name) AS …

1
SQL Server 2012での2つのクエリの比較
SQL Server 2012の2つのクエリを比較しています。目標は、最適なクエリを選択するときに、クエリオプティマイザーから利用可能な関連情報をすべて使用することです。両方のクエリは同じ結果を生成します。すべての顧客の最大注文ID。 FREEPROCCACHEおよびDROPCLEANBUFFERSを使用して各クエリを実行する前に、バッファプールをクリアしました 以下の情報を使用して、どのクエリがより良い選択ですか? -- Query 1 - return the maximum order id for a customer SELECT orderid, custid FROM Sales.Orders AS O1 WHERE orderid = (SELECT MAX(O2.orderid) FROM Sales.Orders AS O2 WHERE O2.custid = O1.custid); -- Query 2 - return the maximum order id for a customer SELECT …

1
主キーをファイルグループに移動する(SQL Server 2012)
クラスター化された主キーを新しいファイルグループに移動するにはどうすればよいですか?私はすでに可能な「アルゴリズム」を見つけましたが、恐ろしく非効率的です: クラスター化されていないインデックス付きのドロップ(それらを再ソートして再構築する必要があります) クラスター化インデックスを削除します(テーブル全体を再ソートする必要があります) 新しい主キー制約を作成します(巨大なソート操作) すべての非クラスター化インデックスを作成する(並べ替えと書き込みが必要) より効率的な方法はありますか?これはひどく非効率的であり、弱いサーバーではテーブルのサイズが50GBであるため、時間がかかります。 これらすべてをスキップして、新しいファイルグループで再構築する方法はありませんか?データの並べ替えは必要ありません。

5
テーブルを切り捨てるにはどのような権限が必要ですか?
データベースに対する次の権限を持つSQLアカウントを持っています。 db_executorこのアカウントは、このスクリプトによって作成されたの一員として見役割: CREATE ROLE [db_executor] AUTHORIZATION [dbo] GO GRANT EXECUTE TO [db_executor] GO テーブルで、、またはを実行するselectとupdate、正常に動作します。テーブルにアクセスしようとすると、次のエラーメッセージが表示されます。insertdeletetruncate オブジェクト "TableName"が存在しないか、権限がないため、見つかりません。 このアカウントにはどのような権限がありませんか?

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