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

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

1
特定の時間にログに表示されるFlushCacheメッセージ
最近、多くのデータベースパフォーマンスの問題が発生しており、その理由を理解できるかどうかを確認しようとしてきました。私たちにはDBA(私はソフトウェア開発者)がいないので、私はただそれを翼に乗せているようなもので、オンラインで見つけたものの多くは外国語のように読めます。 SQL Serverは毎朝再起動します。これが、稼働中にSQL Serverを操作できる唯一の方法だからです。毎朝午前5時ごろに、ログで2分ごとにこのメッセージを取得し始めていることに気付きました。 FlushCache:db 9:0の97168ミリ秒で7432の書き込みで11848 bufsをクリーンアップ(8139の新しいダーティbufsを回避) 最後の未解決のターゲット:4、avgWriteLatency 32 平均スループット:0.72 MB /秒、I / O飽和:11635、コンテキストスイッチ18849 数字はもちろん毎回異なりますが、サーバーを再起動するまで同じパターンで何度も同じメッセージが表示されます。私はこれをどのように解釈するかわからない、私はそれについてグーグルにしようとしてきたし、私が集めたのは、I / Oに何か問題があるかもしれないということであり、何かが予想以上に時間がかかっているということです。最近SSDの使用に切り替えたので、書き込みの問題になるとは思いませんでした。 誰もこれに光を当てることができますか?

1
SET STATISTICS IO-ワークテーブル/ワークファイル
私はクエリを実行しています、それは計画を生成します: 統計IO: Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. Table 'Workfile'. Scan count 128, logical reads 5952, physical reads 576, read-ahead reads 6080, lob logical reads 0, lob physical reads 0, …

5
この明示的なキャストがリンクサーバーでのみ問題を引き起こすのはなぜですか?
オリジンサーバーのビューを介してリンクサーバーからデータをクエリしています。ビューは、次のような標準化された列のカップルを含める必要がありCreated、ModifiedかつDeleted、この場合には、ソース・サーバー上の表は、任意の適切な情報を持っていません。したがって、列はそれぞれの型に明示的にキャストされます。ビューを更新し、列を NULL AS Modified に CAST(NULL as DateTime) as Modified ただし、この更新の実行後、ビューは次のエラーメッセージをトリガーします。 メッセージ7341、レベル16、状態2、行3列 "(ユーザー生成式).Expr1002"の現在の行値をOLE DBプロバイダー "SQLNCLI11"からリンクサーバー ""に取得できません。 この「明示的なキャスト」の変更は、通常、問題なくオリジンサーバー全体で行われましたが、問題は関連するサーバーのバージョンに関連している可能性があります。このキャストを実際に適用する必要はありませんが、よりクリーンに感じます。今、私はなぜこれが起こっているのか興味があります。 サーバーバージョン(オリジン): Microsoft SQL Server 2012-11.0.5058.0(X64)2014年5月14日18:34:29 Copyright(c)Microsoft Corporation Enterprise Edition(64-bit)on Windows NT 6.1(Build 7601:Service Pack 1)(ハイパーバイザー) サーバーバージョン(リンク): Microsoft SQL Server 2008 R2(SP1)-10.50.2500.0(X64)2011年6月17日00:54:03 Copyright(c)Microsoft Corporation Enterprise Edition(64-bit)on Windows NT 6.1(Build 7601:Service Pack 1)(ハイパーバイザー) 編集 問題の列をすべて掲載しないことでミスを犯したことに気付いたので、重要な詳細を省いたことを謝罪する必要があります。これに気づかなかったのは早く分かりません。しかし、疑問はまだ残っています。 …

2
エラーで接続プールがリセットされます:18056、重大度:20、状態:46。Perfmonカウンターが表示されない
SQL認証(接続プールの数を減らすため)と.NET 4.0接続文字列を使用して、Windows 2008 R2 Enterprise Server上のSQL Server Enterprise Edition 2012 SP1に接続しています。 Microsoft SQL Server 2012(SP1)-11.0.3000.0(X64) 2012年10月19日13:38:57 Copyright(c)Microsoft Corporation Enterprise Edition(64ビット)on Windows NT 6.1(Build 7601:Service Pack 1) Webサイトの異なる部分にある8つの異なるグループに分割された約50台のサーバーを使用します。 当社のWebサイトでは、このSQL Serverを使用して訪問追跡データを記録しています。過去数日間にわたって、接続プールのリセットに関する次のメッセージが吐き出されました。 クライアントは、接続プーリング用にリセットされたSPID 1327のセッションを再利用できませんでした。失敗IDは46です。このエラーは、以前の操作が失敗したことが原因である可能性があります。このエラーメッセージの直前に、失敗した操作のエラーログを確認します。 エラーログの読み取り: エラー:18056、重大度:20、状態:46 。クライアントは、接続プーリング用にリセットされたSPID 959のセッションを再利用できませんでした。失敗IDは46です。このエラーは、以前の操作が失敗したことが原因である可能性があります。このエラーメッセージの直前に、失敗した操作のエラーログを確認します。 ユーザー 'xxxx'のログインに失敗しました。理由:接続でのログインの再検証中に、ログインオブジェクトで構成されたデータベース 'xxxxxxxx'を開くことができませんでした。[クライアント:10.xx.xx.xxx] :いくつかの掘削後、私はCSSのブログにこの文書を発見したエラー18056 -クライアントが接続プーリングのためにリセットされたSPIDとのセッション##、再利用することができませんでした:それはしくみとアーロン・ベルトランこの1:トラブルシューティングエラー18456を。私はエラー番号が異なることを知っていますが、障害IDは同じであり、メッセージの数は同じです)。 失敗ID 46は、ログインに権限がなかったことを示しています。ログインはデフォルトでmasterデータベースになり、db名は接続文字列で指定されます。 接続文字列プールなどの数を確認したいと思い、Perfmonのすべてのカウンターを確認しました.Net Data Provider for SqlServer。defaultdomain9675インスタンスのオプションしか提供されなかったため、Datacentreネットワークのシステム生成ID名を想定しています。残念ながら、すべてのカウンターはゼロを読み取っています。他のメインサーバーの1つでは、接続プールは約10をホバリングしています。 私の質問は3倍です Windows 2008 …

4
「時々」遅いクエリの診断に関するアドバイス
カバリングインデックスを介してインデックス付きビューから結果を返すストアドプロシージャがあります。通常、高速(約10ミリ秒)で実行され、最大8秒まで実行されることもあります。 ランダム実行の例を次に示します(注:これは低速ではありませんが、クエリテキストは、渡される値を除いて同じです)。 declare @p2 dbo.IdentityType insert into @p2 values(5710955) insert into @p2 values(5710896) insert into @p2 values(5710678) insert into @p2 values(5710871) insert into @p2 values(5711103) insert into @p2 values(6215197) insert into @p2 values(5710780) exec ListingSearch_ByLocationAndStatus @statusType=1,@locationIds=@p2 スプロックは次のとおりです。 ALTER PROCEDURE [dbo].[ListingSearch_ByLocationAndStatus] @LocationIds IdentityType READONLY, @StatusType TINYINT AS BEGIN SET NOCOUNT ON; …

3
相互に排他的なサブクラスを持つタイプ/サブタイプデザインパターンでのサブタイプのサブタイプの実装
前書き この質問が将来の読者に役立つように、一般的なデータモデルを使用して、直面している問題を説明します。 我々のデータモデルは、としてラベル付けされなければならない3つの事業体で構成A、BおよびC。物事をシンプルに保つために、それらの属性はすべてintタイプになります。 エンティティにAは次の属性があります:D、EおよびX; エンティティにBは次の属性があります:D、EおよびY; エンティティにCは次の属性がDありZます。 すべてのエンティティが共通の属性を共有Dしているため、タイプ/サブタイプデザインを適用することにしました。 重要:エンティティは相互に排他的です!これは、エンティティがAまたはBまたはCであることを意味します。 問題: エンティティAにBは、さらに別の一般的な属性Eがありますが、この属性はエンティティに存在しませんC。 質問: 可能であれば、上記の特性を使用して設計をさらに最適化したいと思います。 正直に言うと、これをどのように行うのか、どこから試すのかわからないので、この投稿です。

2
DELETEがパフォーマンスに長引く影響を与えるのはなぜですか?
最後に、@ table変数と#tempテーブルのパフォーマンスを比較するためのテストスクリプトがあります。私はそれを正しく設定したと思います-パフォーマンスのタイミングはDELETE / TRUNCATEコマンドの外で取られます。私が得ている結果は次のとおりです(ミリ秒単位の時間)。 @Table Variable #Temp (delete) #Temp (truncate) --------------- -------------- ---------------- 5723 5180 5506 15636 14746 7800 14506 14300 5583 14030 15460 5386 16706 16186 5360 念のためGetDate()、バッチではなくステートメントの時点でCURRENT_TIMESTAMP(別名)が取得されることを示しているため、TRUNCATE / DELETEとSET @StartTime = CURRENT_TIMESTAMPステートメントの相互作用はありません。 select current_timestamp waitfor delay '00:00:04' select current_timestamp ----------------------- 2012-10-21 11:29:20.290 ----------------------- 2012-10-21 11:29:24.290 DELETEを使用してテーブルをクリアする場合、最初の実行と後続の実行の間のジャンプは非常に一貫しています。DELETEの理解に欠けているものは何ですか?これを何度も繰り返し、順序を交換し、成長を必要としないようにtempdbのサイズを調整しました。 CREATE TABLE …

1
列ストアインデックスの構造は何ですか?
コードネームDenaliが付けられたSQL Server 2012の新機能の1つに、Columnstoreインデックスがあります。 Bツリー構造、リーフレベルとBツリーページのストレージの違い、含まれているフィールドの影響、それらを使用するための最適化、キーの順序など、通常の古い行ストアインデックスについてかなり知っています。 列ストアインデックスの内部情報を得るのに苦労しています。 どのように構成されていますか? Bツリーはありますか?その他の構造はありますか? データはどのように編成されていますか? どの種類の特定の演算子を使用するのが最適ですか? 他のアンチパターンを使用する際に避けるべきものはありますか? それらについて私が知ることができるものの多くは、基本的に「通常の」インデックスの正反対です。つまり、キーの順序付け、含まれるフィールド、非クラスタ化のみです。 どんな洞察も大歓迎です。

2
SQL Serverでロックされたテーブルまたは行を検出する
ブロックされたセッションの詳細を追跡する方法を理解/学習しようとしています。 そこで、次のセットアップを作成しました。 create table foo (id integer not null primary key, some_data varchar(20)); insert into foo values (1, 'foo'); commit; 次に、2つの異なるクライアントからデータベースに2回接続します。 最初のセッションの問題: begin transaction update foo set some_data = 'update' where id = 1; ロックを保持するために、明示的にコミットしません。 2番目のセッションでは、同じステートメントを発行します。もちろん、ロックのために待機します。セッション2がfooテーブルを待機していることを確認するために、さまざまなクエリを使用しようとしています。 sp_who2 以下を示します(重要な情報のみを表示するためにいくつかの列を削除しました)。 SPID | ステータス| BlkBy | DBName | コマンド| SPID | リクエストID ----- …

1
INSERTのOUTPUT句の順序に依存しても安全ですか?
この表が与えられた場合: CREATE TABLE dbo.Target ( TargetId int identity(1, 1) NOT NULL, Color varchar(20) NOT NULL, Action varchar(10) NOT NULL, -- of course this should be normalized Code int NOT NULL, CONSTRAINT PK_Target PRIMARY KEY CLUSTERED (TargetId) ); わずかに異なる2つのシナリオで、行を挿入し、ID列から値を返します。 シナリオ1 INSERT dbo.Target (Color, Action, Code) OUTPUT inserted.TargetId SELECT t.Color, t.Action, t.Code …

2
CREATE TABLEをロックする
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 5年前に移行され ました。 別のアプリケーションでは、設計が悪いことに感銘を受けました。複数のスレッドがEnsureDatabaseSchemaExists()メソッドを同時に実行します。これは基本的に次のようになります。 IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'MyTable') AND type = N'U') BEGIN CREATE TABLE MyTable ( ... ); END ただし、SERIALIZABLEトランザクションで実行された場合でも、このコードはスレッドセーフではないようです(つまり、並列コードはテーブルを複数回作成しようとします)。別のスレッドがまったく同じSELECTステートメントを実行できないようにするロックを取得するためにSELECTステートメントを強制する機会はありますか? multi-threaded-EnsureSchemaExists()メソッドのより良いパターンはありますか?

3
SQLCMDコマンドはアクセントを挿入できません
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 6年前に移行され ました。 コマンドラインから新しいデータベースをセットアップするために、sqlcmd.exeを実行しようとしています。Windows 7 64ビットでSQL SERVER Express 2012を使用しています。 私が使用するコマンドは次のとおりです。 SQLCMD -S .\MSSQLSERVER08 -V 17 -E -i %~dp0\aqualogyDB.sql -o %~dp0\databaseCreationLog.log 次に、SQLファイル作成スクリプトの一部を示します。 CREATE DATABASE aqualogy COLLATE Modern_Spanish_CI_AS WITH TRUSTWORTHY ON, DB_CHAINING ON; GO use aqualogy GO CREATE TABLE [dbo].[BaseLayers] ( [Code] nchar(100) NOT NULL , [Geometry] nvarchar(MAX) NOT NULL …

3
選択で一致する余分な文字を含む一意の識別子
一意の識別子を使用してSQL Server 2012を使用していますが、末尾に追加文字(36文字ではない)を追加して選択すると、UUIDとの一致が返されることに気付きました。 例えば: select * from some_table where uuid = '7DA26ECB-D599-4469-91D4-F9136EC0B4E8' 行をuuidで返します7DA26ECB-D599-4469-91D4-F9136EC0B4E8。 しかし、あなたが実行した場合: select * from some_table where uuid = '7DA26ECB-D599-4469-91D4-F9136EC0B4E8EXTRACHARS' また、uuidを持つ行を返します7DA26ECB-D599-4469-91D4-F9136EC0B4E8。 SQL Serverは、選択を行うときに36を超えるすべての文字を無視するようです。これはバグ/機能または構成可能なものですか? フロントエンドで長さの検証を行っているため、大きな問題ではありませんが、私には正しい動作とは思えません。

6
SQL Server“ Denali”とは何ですか?新着情報?
MSDNのドロップダウンリストでSQL Server "Denali"という新しいタイトルを見つけましたが、それに関する多くの情報は見つかりませんでした。 新機能(このドキュメントはプレビュー用です) SQL Server "Denali"のトップ9の新機能 このリリースの新機能や重要なバグ修正に関する詳細情報はありますか?私は誰かがそれを使用またはテストしたことを望んでいます。 新機能 シーケンス 拡張FILESTREAM(Eric Humphreyに感謝) OFFSET&FETCH(ORDER BY句) メモリマネージャーの変更 LAG(..)およびLEAD(..).. OVER(Partition By..Order By)句(gbnに感謝) アーロンのリスト

4
SSMS Tools Pack Alternative [終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、データベース管理者のStack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 SSMS Tools Pack 2012に匹敵するツールはありますか?ライセンス(マシンあたり30ドル、任意の数のマシンで100ドル... 3か月間)には多くの要望が残されており、他にどのようなオプションが利用可能かはわかりませんでした。 たとえば、私が本当に見逃していることの1つは、「実行するすべてのクエリを保存する」です。いじくり回して調査するとき、クエリを実行するときに、クエリのさまざまなバージョンのバックアップを実行しておくことは非常に貴重です。または、2か月前に作業していたクエリのバックアップがないことに気付いたとき。 明確化:SQL Server Management Studioには公式のアドオンサポートはありませんが、いくつかのツールがあります。SSMS Tools Packは私が非常に気に入っていたもの(2005年、2008年版)ですが、2012年のライセンス料は恐ろしいものです。(合理的なライセンス料を支払うことになりますが、それはここでの質問ではありません。) たとえば、SSMSにクールな追加機能があり、価値があると思われるSSMS Boostを見つけました。 SQL Server 2012で利用できる他のアドインは何ですか?SSMS Tools PackのようにF5キーを押したときにクエリを保存するもの、またはリストされている2つのツール以外の何かが必要ですか?

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