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

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

3
SQLログファイルのサイズを最適に維持する方法
私はやや新しいDBAであり、かなりの量のアクティビティがあるSQL Server 2012インスタンスを管理しています。ポイントインタイムリカバリが必要なため、フルリカバリモードで実行しています。 現在、私は毎日午前5時にデータベースとログの完全バックアップを取っています。一部のログファイルは最大300 GBに膨らみ、バックアップを取ってもサイズは小さくなりません。次のようなものを実行することで、サイズを小さくすることができます。 BACKUP LOG db1 TO DISK = '\\server\share\db1_log1.trn'; DBCC ShrinkFile([db1_log], 0); BACKUP LOG db1 TO DISK = '\\server\share\db1_log2.trn'; DBCC ShrinkFile([db1_log], 0); BACKUP LOG db1 TO DISK = '\\server\share\db1_log3.trn'; DBCC ShrinkFile([db1_log], 0); バックアップファイルのLSNを確認すると、次のようなものが表示されます。 RESTORE headeronly FROM DISK = N'\\server\share\db1_log1.trn' FirstLSN: 15781000014686200001 SecondLSN: 15802000000665000001 RESTORE headeronly FROM DISK …

4
テーブル内のNULL値の自己比較
次のような不思議なt-sqlの振る舞いについて私はいつも困惑しています -- Create table t and insert values. use tempdb CREATE TABLE dbo.t (a INT NULL); -- insert 3 values INSERT INTO dbo.t values (NULL),(0),(1); GO set ansi_nulls off -- purposely turn off, so we can allow NULL comparison, such as null = null go -- expect 3 rows returned …

1
削除ステートメントで使用されないクラスター化インデックス
次のように定義されたSQL Serverテーブルがあります CREATE TABLE [dbo].[Production_Detail] ( [Id] [bigint] NOT NULL DEFAULT (NEXT VALUE FOR [dbo].[Production_Detail_Seq]), [Meta_Data_ID] INT NOT NULL , [Production_Detail_Time] DATETIME NOT NULL, [Production_Detail_Time_Local] DATETIME NOT NULL, [Production_Detail_Value] FLOAT NULL, [IntegratedDM] BIT NOT NULL DEFAULT 0, [DailyIntegratedDM] BIT NOT NULL DEFAULT 0, [InsertedDate] DateTime NOT NULL, [ModifiedDate] DateTime NOT …

2
欠落している日付に、グループの以前に入力された日付のデータ値を入力します
部門間で転送される画像ヘルプデスクチケット。チケットが開いている日ごとに、各チケットの1日の終わりに部門が何であるかを知りたい。テーブルには、営業日ごとの各チケットの最後の部門が含まれ、部門の変更がある(チケットが最初に開かれた日付と閉じられた日付の行を含む)。データテーブルは次のようになります。 CREATE TABLE TicketAssigment ( TicketId INT NOT NULL, AssignedDate DATE NOT NULL, DepartmentId INT NOT NULL); 必要なのは、Dateで順序付けられた前のTicketAssigment行のDepartmentIdを使用して、各TicketIdの欠落している日付を入力することです。 このようなTicketAssigment行がある場合: 1, '1/1/2016', 123 -- Opened 1, '1,4,2016', 456 -- Transferred and closed 2, '1/1/2016', 25 -- Opened 2, '1/2/2016', 52 -- Transferred 2, '1/4/2016', 25 -- Transferred and closed この出力が必要です: 1, …

3
DMV sys.dm_exec_requestsのtotal_elapsed_timeは完全に不正確ですか?
SQL Server 2012を実行していて、DMVを使用して監視するためにいくつかのクエリをまとめようとしています。ただし、DMV のtotal_elapsed_timeフィールドをsys.dm_exec_requests見ると、数字は途方に暮れています。以下に例を示します。 SELECT session_id, RunTime = CURRENT_TIMESTAMP, start_time, total_elapsed_time FROM sys.dm_exec_requests WHERE session_id = 284; session_id RunTime start_time total_elapsed_time 284 2016-04-07 16:14:03.690 2016-04-07 16:08:14.587 1419976 私の計算*では、経過時間は約1,419,976ではなく、約349,103です。それは4倍以上ずれています。 *現在の時刻とstart_timeの差(ミリ秒単位)から、つまり SELECT DATEDIFF(MILLISECOND, '2016-04-07T16:08:14.587', '2016-04-07T16:14:03.690'); サーバー情報は次のとおりです。 SELECT @@VERSION; Microsoft SQL Server 2012 - 11.0.5592.0 (X64) Apr 17 2015 15:18:46 Copyright (c) Microsoft …

2
一括挿入時間の大きなばらつき
そのため、ステージングテーブルからデータを取得してデータマートに移動するための単純な一括挿入プロセスがあります。 このプロセスは、「バッチあたりの行数」のデフォルト設定を持つ単純なデータフロータスクであり、オプションは「tablock」および「チェック制約なし」です。 テーブルはかなり大きいです。データサイズが201GBでインデックススペースが49GBの587,162,986。テーブルのクラスター化インデックスは次のとおりです。 CREATE CLUSTERED INDEX ImageData ON dbo.ImageData ( DOC_ID ASC, ACCT_NUM ASC, MasterID ASC ) 主キーは次のとおりです。 ALTER TABLE dbo.ImageData ADD CONSTRAINT ImageData PRIMARY KEY NONCLUSTERED ( ImageID ASC, DT_CRTE_DOC ASC ) 現在、BULK INSERTSSIS経由の実行速度が非常に遅いという問題が発生しています。100万行を挿入するのに1時間。テーブルに入力するクエリは既にソートされており、入力するクエリの実行には1分もかかりません。 プロセスの実行中に、5〜20秒かかり、次の待機タイプを示すBULK挿入を待機しているクエリを確認できます。 PAGEIOLATCH_EX。プロセスは、一度にINSERT約1000行までしか実行できません。 昨日、このプロセスをUAT環境に対してテストしているときに、同じ問題に直面していました。私はプロセスを数回実行し、この遅い挿入の根本原因を特定しようとしました。その後、突然5分未満で実行が開始されました。それで、私はそれをさらに数回実行しましたが、すべて同じ結果になりました。また、5秒以上待機していた一括挿入の数は、数百から約4に減少しました。 今、これは私たちが活動を大幅に落としてしまったというわけではないので困惑しています。 期間中のCPUが低い。 遅いときは、ディスクでの待機が少ないように見えます。 プロセスが5分未満で実行されていた時間枠の間に、実際にはディスク遅延が増加します。 また、このプロセスの実行が不十分な間、IOはずっと低くなりました。 すでに確認しましたが、ファイルが70%しかいっぱいになっていないため、ファイルの増加はありませんでした。ログファイルの残りは50%です。DBはシンプルリカバリモードです。DBには1つのファイルグループしかありませんが、4つのファイルに分散しています。 私が疑問に思っていることA:なぜ、これらの一括挿入でこんなに長い待ち時間が見られたのか。B:実行速度を上げるためにどのような魔法が発生しましたか? サイドノート。今日もがらくたのように走ります。 現在パーティション化されているUPDATE。しかし、それはせいぜい愚かな方法で行われます。 CREATE PARTITION SCHEME …

1
SQL Serverがこれらの統計のフルスキャン以外の更新を拒否するのはなぜですか?
毎日のデータウェアハウスビルドで、比較的長時間(20分以上)統計の自動更新操作が実行されていることに気付きました。関係するテーブルは CREATE TABLE [dbo].[factWebAnalytics]( [WebAnalyticsId] [bigint] IDENTITY(1,1) NOT NULL, [MarketKey] [int] NOT NULL CONSTRAINT [DF_factWebAnalytics_MarketKey] DEFAULT ((-1)), /*Other columns removed*/ CONSTRAINT [PK_factWebAnalytics] PRIMARY KEY CLUSTERED ( [MarketKey] ASC, [WebAnalyticsId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [MarketKeyPS]([MarketKey]) ) ON …

3
バックアップ内部-SQL Serverのロックとパフォーマンスオーバーヘッドの観点から、バックアップジョブの実行中はどうなりますか?
MySQLの場合、データベースはSQLステートメントでテーブルごとにバックアップされることを知っています。これによりロックが発生し、バックアップ中に列を更新すると、整合性の問題が発生する可能性があります。 私の理解では、これはMicrosoft SQL Serverには適用されませんが、SQL Serverはこれをどのように処理しますか?DBの一貫性を保つために内部フリーズがありますか? また、バックアップはシングルスレッドであり、単一のファイルにバックアップすることを想定して、1つのコアのみを使用することを聞きました。また、マルチコアマシン、たとえば16コア、または少なくとも1つよりもかなり大きな数のマシンがあるとします。 私の個人的な経験から、バックアップを取る際にロックやオーバーヘッドの問題はありませんでしたが、私の経験は限られています。そのため、サーバープロパティで常にバックアップの圧縮を有効にすることをお勧めします。 では、バックアップジョブの実行中はどうなりますか?また、バージョンごとに大きな違いはありますか?たとえば、2008、2012、2014(ライセンスではありません)。

1
高可用性でのSQL Server 2012データベースの復元
別のインスタンスの別のデータベースと同期された、常時オンの高可用性モードのデータベースがあります。.bakを使用してファイルからプライマリデータベースに復元するにはどうすればよいT-SQLですか? 私は高可用性に不慣れであり、復元を行う前にデータベースを高可用性から削除してから再び高可用性に戻す必要があるとアドバイスされましたが、よくわかりません。 プライマリAlwaysOnがまだ有効であり、セカンダリと自動的に同期する間に、プライマリに直接復元できることを望んでいます。

5
SQL Serverテーブルの変更を検出する
私のアプリケーションでは、SQL Server 2012で実行されているDBを使用して、高価なクエリを定期的に実行し、後でアプリケーションがクエリできるテーブルに結果を書き込むジョブ(スケジュールされたタスク)があります。 理想的には、クエリが最後に実行されてから何かが変更された場合にのみ、その高価なクエリを実行したいと思います。ソーステーブルは非常に大きいため、すべての候補列などのチェックサムを選択することはできません。 私は次のアイデアを持っています: ソーステーブルで何かを変更するたびに、最後に変更されたタイムスタンプ、「クエリである必要があります」フラグ、またはこのようなものを追跡テーブルに明示的に書き込みます。 トリガーを使用して同じことを行います。 ただし、書き込みを明示的に追跡せずに、テーブルの変更を簡単に検出する方法があるかどうかを知りたいです。たとえば、ROWVERSIONテーブルなどの「現在」を取得できますか?

2
SQL Server 2012 Expressのインストールは、「データベースエンジンの起動ハンドルが見つかりませんでした」というエラーで失敗します。
SQL Server Express 2012 w / SP1 x64をWindows 7 SP1 x64にインストールしようとしています。このマシンには、以前にSQL Server Express 2012がインストールされていました。このインスタンスはSQL Server 2012 Standardにアップグレードされ、その後アンインストールされました。 インストール中に選択されるオプションは次のとおりです。 SQL Server製品の更新をインストールに含める-KB 2793634に関連する2 すべての機能をデフォルトのディレクトリにインストールします デフォルトのインスタンスルートディレクトリにある名前付きインスタンスSQLEXPRESS 既定のサービスアカウント:SQL Serverデータベースエンジン-> NT Service \ MSSQL $ SQLEXPRESS デフォルトのデータベースエンジン構成 インストールは次のエラーで失敗します。 TITLE:Microsoft SQL Server 2012 Service Pack 1セットアップ 次のエラーが発生しました。 データベースエンジンの起動ハンドルが見つかりませんでした。 ヘルプについては、http://go.microsoft.com/fwlink?LinkID = 20476&ProdName = Microsoft%20SQL%20Server&EvtSrc = setup.rll&EvtID = …

1
sys.partition.rows列はどれくらい正確ですか?
システムビューにsys.partitionsは、特定のパーティション内の行の総数である「行」列があります。パーティション化されていない(または見方によってはパーティションが1つしかない)テーブルの場合、この列はテーブル内の行数を示します。 私はこの列がどれほど正確か、そしての代わりにそれを使用できるかどうかに興味がありSELECT COUNT(1) FROM TableNameます。テーブルを作成して数千行を追加し、数百を削除し、さらに数千を追加するなど、いくつかの実験を行いましたが、カウントは常に無効になっています。ただし、約700ミリ行と複数のインデックスを持つ1つのテーブルがあります。sys.partitionsクラスター化インデックスの行は再び無効になりますが、他のインデックスにはわずかな変動(+ -20k)が見られます。 この行がどのように計算され、表示されるのと同じくらい正確かどうかは誰にもわかりますか?

3
SQL Serverは、等しい比較ではなく、類似の比較ではないvarchar値の自動トリム
今日、SQL Serverでいくつかの興味深い動作(2005年と2012年に観測)に遭遇しました。 =NVARCHARフィールドを使用して比較を行うクエリは、文字列の末尾のスペースを無視しました(または比較前に値を自動トリミングしました)が、like演算子を使用した同じクエリはスペースを無視しませんでした。使用されている照合は、2012年にLatin1_General_CI_ASです。 このSQL Fiddleを検討してください:http : //sqlfiddle.com/#!6/72262/4 like演算子は末尾のスペース文字列の結果を返さないが、演算子は返すことに注意してください=。どうしてこれなの? ボーナスポイント:これをVARCHARフィールドに複製することはできません。スペースは両方のデータタイプで同じように処理されると考えていました。これは本当ですか?

1
BitlockerでSQL Server 2012 Standardを使用する
Bitlockerを使用してSQL Server 2012データベースを保護しようとしています。Bitlockerを機能させるための問題はありません。問題は、ドライブがロックされると、SQL Serverがデータを読み取れなくなることです。 もちろんTDEを使​​用したいのですが、それはEnterpriseエディションに限定されているため、これはやめましょう。サーバーでTPMがアクティブになっています。これはWindowsドメインにあり、Windows認証を使用します...しかし、ドライブが暗号化されると、DBに何もアクセスできなくなります。 ここに何が欠けていますか?

3
ユーザー定義のテーブルタイプを作成し、同じトランザクションで使用できますか?
次を実行すると(管理スタジオで、GOはコマンドをバッチに分割します) use tempdb begin tran go CREATE TYPE dbo.IntIntSet AS TABLE( Value0 Int NOT NULL, Value1 Int NOT NULL ) go declare @myPK dbo.IntIntSet; go rollback デッドロックエラーメッセージが表示されます。私のプロセスはそれ自体でデッドロックしました。この動作は2008年、2008R2、2012年に見ました。 作成された同じトランザクション内で新しく作成されたタイプを使用する方法はありますか?

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