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

SQL Server 2008(メジャービルドバージョン10.00.xxxx)。また、sql-serverでタグ付けしてください。

2
バックアップを作成しているプロセスが見つかりません
お客様のサーバーにSQL Server 2008のインスタンスがインストールされています。お客様のIT部門は、マシンのさまざまなバックアップを担当しています。 SQL Serverログは、毎日午後7時に完全バックアップがあることを示していますが、SQL Serverでスケジュールされた計画の証拠を見つけることができません。 私たちに連絡した技術者は、何らかの自動バックアップがあったかどうかを私たちに伝えることができませんでした。彼らが言ったのは、マシン全体がバックアップされているということだけです。 このフォーラムスレッドで見つけたスクリプトを使用して、物理デバイス名がGUIDであり、これが外部バックアッププロセスであることを確認しました。 USE [msdb] GO SELECT [bs].[database_name], [bs].[backup_start_date], [bs].[backup_finish_date], [bs].Server_name, [bs].user_name AS [BackupCreator] , [bmf].physical_device_name FROM msdb..backupset bs INNER JOIN msdb..backupmediafamily bmf ON [bs].[media_set_id] = [bmf].[media_set_id] ORDER BY [bs].[backup_start_date] DESC これは、上記のクエリの行です。 db_name 2015-09-16 19:01:23.000 2015-09-16 19:01:28.000 SERVER_NAME NT AUTHORITY \ SYSTEM {424F084A-F35D-4A66-8FC7-072268A89A77} 5 さらに、バックアップの開始日と終了日は5秒間しかないため、SQLサーバーの仕事ではないことは明らかです。 …

1
異なるテーブルからORDER BYを使用してTOP 1を選択するときにインデックス付きビューを設定する方法
次のシナリオでインデックス付きビューを設定して、2つのクラスター化インデックススキャンなしで次のクエリが実行されるようにしています。このクエリのインデックスビューを作成して使用するときはいつでも、私が付けたインデックスはすべて無視されるようです。 -- +++ THE QUERY THAT I WANT TO IMPROVE PERFORMANCE-WISE +++ SELECT TOP 1 * FROM dbo.TB_test1 t1 INNER JOIN dbo.TB_test2 t2 ON t1.PK_ID1 = t2.FK_ID1 ORDER BY t1.somethingelse1 ,t2.somethingelse2; GO テーブルの設定は次のとおりです。 2つのテーブル 上記のクエリによる内部結合で結合されている 上記のクエリでは、最初の列から、次に2番目のテーブルの列の順になっています。TOP 1のみが選択されています (以下のスクリプトには、問題の再現に役立つ場合に備えて、テストデータを生成する行もいくつかあります) -- +++ TABLE SETUP +++ CREATE TABLE [dbo].[TB_test1] ( [PK_ID1] [INT] IDENTITY(1, …

3
参照するすべての外部キーへの主キー更新のカスケード
それを参照するすべての外部キー間で更新をカスケードして主キー列の値を更新することは可能ですか? #編集1: followinqクエリを実行すると select * from sys.foreign_keys where referenced_object_id=OBJECT_ID('myTable') 、update_referential_actionが0に設定されていることがわかります。したがって、主キー列を更新した後は何も行われません。外部キーを更新してCASCADE UPDATEでそれらを作成するにはどうすればよいですか? #EDIT 2: スキーマ内のすべての外部キーの作成または削除をスクリプト化するには、次のスクリプトを実行します(ここから取得) DECLARE @schema_name sysname; DECLARE @table_name sysname; DECLARE @constraint_name sysname; DECLARE @constraint_object_id int; DECLARE @referenced_object_name sysname; DECLARE @is_disabled bit; DECLARE @is_not_for_replication bit; DECLARE @is_not_trusted bit; DECLARE @delete_referential_action tinyint; DECLARE @update_referential_action tinyint; DECLARE @tsql nvarchar(4000); DECLARE @tsql2 nvarchar(4000); …

4
列を合計して個別のバケットを作成するウィンドウクエリを作成するにはどうすればよいですか?
次のような10進値の列を含むテーブルがあります。 id value size -- ----- ---- 1 100 .02 2 99 .38 3 98 .13 4 97 .35 5 96 .15 6 95 .57 7 94 .25 8 93 .15 私が成し遂げる必要があることは、説明するのが少し難しいので、ご容赦ください。私がやろうとしているのは、size列の集計値を作成することvalueです。これは、に従って降順で、前の行の合計が1になるたびに1ずつ増加します。結果は次のようになります。 id value size bucket -- ----- ---- ------ 1 100 .02 1 2 99 .38 1 3 98 …

3
区切られた文字列の2番目または3番目の値を取得します。
次の表があります。 ========================================================== | Name_Level_Class_Section | Phone Num | ========================================================== | Jacky_1_B2_23 | 1122554455 | | Johnhy_1_B2_24 | 1122554455 | | Peter_2_A5_3 | 1122554455 | ========================================================== SQLステートメントを次のように簡略化しようと考えています。 select *, substring(Name_Level_Class_Section, CHARINDEX('_',Name_Level_Class_Section, (CHARINDEX('_', Name_Level_Class_Section) + 1)) + 1, CHARINDEX('_',Name_Level_Class_Section, (CHARINDEX('_',Name_Level_Class_Section, (CHARINDEX('_',Name_Level_Class_Section)+1))+1))- CHARINDEX('_',Name_Level_Class_Section, (CHARINDEX('_',Name_Level_Class_Section)+1))) as CLA from Bookings order by CLA asc, Name_Level_Class_Section …

3
小数点の自動丸めの問題
質問は比較的簡単です。中間結果が巨大な10進数である3つの列を計算する必要があります。SQLServerで、キャスト/変換に関係なく基本的に小数点を丸める問題が発生しています。 たとえば、単純な除算を1234/1233としてみましょう。電卓は1,00081103000811を生成します。しかし、SQL Serverでこれを行うと、次のようになります。 -- Result: rounded at 1.000811000... with trailing zeroes up until the 37 precision SELECT CAST(CAST(1234 AS DEC(38,34))/CAST(1233 AS DEC(38,34)) AS DEC(38,37)) -- Result: rounded at 1.000811 SELECT CONVERT(DECIMAL(38,32), 1234)/CONVERT(DECIMAL(38,32),1233) -- Correct result at 1,00081103000811 -- But this requires the zeroes to be put in manually when you …

5
SQL Serverの最大メモリ設定
SQL Server 2008とWebベースのアプリケーションを、2 GBのメモリしか利用できない単一の専用サーバーで実行しています。 他で言及されているように、SQL Serverは定期的に最大98%の物理メモリを使用します。これは、サーバーで実行されているWebアプリケーションの速度を低下させるようです。 SSMSの[サーバーのプロパティ]の[メモリ]で、[最大サーバーメモリ(MB)]が2147483647に設定されている 私の質問は、利用可能なメモリの量を考えると、最大サーバーメモリボックスに入れる推奨数は何ですか?また、同じサーバーがWebアプリケーションも実行しているということですか? さらに、SQL Serverの実行中にこの数を変更しても安全ですか? アドバイスありがとうございます。

2
SQL Server 2008 R2トランザクションログを使用したCOPY_ONLY完全バックアップの復元
調査を行った後、この質問に対する答えを見つけることができないようです。 背景次の3つの要件に適合するバックアップ計画をセットアップしようとしています。 バックアップの信頼性、夜間の完全バックアップ から復元できるトランザクションログのバックアップ 使用されるディスク容量が少ない 監査ツールでは、バックアップにローカルでアクセスできる必要があります したがって、これらのニーズに合わせるために、フルバックアップを毎週、差分を毎日、トランザクションを毎時と考えています。その後、毎晩、オフサイトに出荷できるcopy_onlyバックアップが実行されます。このバックアップは、ログチェーンが壊れないように行われ、ローカルのディスクスペースを大量に消費することなく、信頼性の高い夜間フルバックアップをオフサイトで実行できます。 質問copy_onlyバックアップから復元し、後でトランザクションログを復元することは可能ですか。 例を挙げて、私が何を話しているのかを理解してください。 以下のリストを使用して、FullbackupCOPY_ONLYC.bakに続いてTransactionbackupG.trn、TransactionbackupH.trn、最後にTransactionbackupI.trnを復元できるかどうか疑問に思っています。 > ---List of Backups--- FullbackupA.bak 01/01/2013 00:00:00 > DifferntialbackupA.bak 02/01/2013 00:00:00 FullbackupCOPY_ONLYA.bak 02/01/2013 00:00:00 > TransactionbackupA.trn 02/01/2013 01:00:00 > TransactionbackupB.trn 02/01/2013 02:00:00 > TransactionbackupC.trn 02/01/2013 03:00:00 > DifferntialbackupB.bak 03/01/2013 00:00:00 FullbackupCOPY_ONLYB.bak 03/01/2013 00:00:00 > TransactionbackupD.trn 03/01/2013 01:00:00 > TransactionbackupE.trn 03/01/2013 …

1
SQLサーバーは、count(*)の結果をint変数と比較する前にintに変換する必要があるのはなぜですか?
私のアプリケーションには多くのクエリがあり、having句でcount集計関数とint変数を比較しています。クエリプランでは、比較の前にimplicit_convertを確認できます。SQLサーバーのドキュメントに従って、カウント関数の戻り値の型がintであるため、これが発生する理由を知りたいです。では、なぜ2つのint値を比較するための暗黙の変換が必要なのでしょうか。 以下は、@ IdCountがint変数として定義されているそのようなクエリプランの一部です。 | --Filter(WHERE:([Expr1022] = [@ IdCount])) |-スカラー計算(DEFINE:([Expr1022] = CONVERT_IMPLICIT(int、[Expr1028]、0))) | --Stream Aggregate(GROUP BY:([MOCK_DB]。[dbo]。[Scope]。[ScopeID])DEFINE:([Expr1028] = Count(*)))


4
特定のユーザーのクエリが遅い
C#.NET Webアプリケーションから呼び出されるクエリがいくつかあります。これは常に高速です(SQL Serverのローカル管理者です)が、ユーザーのグループ(必要な権限を持つドメイングループ)の場合、クエリはアプリケーションでタイムアウトするポイント。 まったく同じクエリがユーザーごとに異なる動作をする原因は何ですか? より詳しい情報: クエリは、ストアドプロシージャではなく、C#コードのインラインSQLです。 アプリはドメイン認証を使用し、ユーザーと私はアプリを通じてクエリを実行します 問題は別のプランであるようで、1つはキャッシュされたため、ユーザーごとに異なっていました。クエリがアプリ経由で遅くなり、SQL Server Management Studioで高速になるため、何かがキャッシュに影響しています。

3
SQL Server 2008の日時インデックスのパフォーマンスのバグ
SQL Server 2008 R2を使用しており、プライマリIDインデックスを持つ非常に大きな(1億行以上)テーブルdatetimeと、非クラスター化インデックスを持つ列があります。私たちは、の使用に基づいていくつかの非常に珍しいクライアント/サーバーの動作を見ているorder by句を、具体的には、インデックス付きのdatetime列。 私は次の投稿を読みました:https : //stackoverflow.com/questions/1716798/sql-server-2008-ordering-by-datetime-is-too-slow しかし、クライアント/サーバーでは、現在よりも多くのことが進行中ですここで説明を開始します。 次のクエリを実行すると(一部のコンテンツを保護するために編集されます): select * from [big table] where serial_number = [some number] order by test_date desc クエリは毎回タイムアウトします。SQL Serverプロファイラーでは、サーバーに対して実行されたクエリは次のようになります。 exec sp_cursorprepexec @p1 output,@p2 output,NULL,N'select * ..... 次に、クエリを次のように変更した場合、 declare @temp int; select * from [big table] where serial_number = [some number] order by test_date …

2
SQL Server 2012可用性グループは「常にオン」ですか?
従来のSQL Serverクラスターでは、フェールオーバーが発生すると、SQL Serverの障害が発生したインスタンスに接続されているすべてのクライアントは接続を失い、各クライアントはフェールオーバークラスターインスタンスへの新しい接続を再確立する必要があります。 AlwaysON可用性グループはこの問題を軽減しますか?SQL Server 2012 AlwaysON可用性グループの場合のフェイルオーバーは、SQL Serverに接続するクライアントに対して透過的ですか?

3
データベースは常にリカバリモードで起動します
サーバーを再起動するたびに、データベースは常に回復モードになり、正常に動作するまでに約20分かかります。これは常に、サーバーを再起動したときにのみ発生するため、いくつか質問があります... これは大きなログファイルが原因である可能性があると言われましたか。それは正しいのでしょうか?そうでない場合、他の原因は何ですか? リカバリを防ぐために、ログファイルのスペースを小さくする必要があります。何が良いですか:縮小または切り捨て? ログファイル/データベースを縮小または切り捨ててサイズを小さくするにはどうすればよいですか?構文は何ですか? 現在Microsoft SQL Server 2008を使用しています。

5
100mmレコードでJOINを使用して更新します。これをより適切に行う方法は?(T-SQL)
実際には、1つのテーブルの1億レコードを更新する必要があります。つまり、列のvarchar値を単にIDに置き換えることでテーブルを正規化します。(「置換」と言いますが、実際にはIDを別の列に書き込んでいます。) 私が達成しようとしているのは、データセットを正規化することです。まだ正規化されていないデータにはインデックスがありません。私の考えは、更新が完了した後、varchar値をtinyint値で置き換える外部キーにインデックスを付けるのを待つ代わりに、生の値にインデックスを構築しないことでした。 UPDATE A SET A.AutoClassID = B.AutoClassID FROM AutoDataImportStaging.dbo.Automobile as A JOIN AutoData.dbo.AutoClass as B on (A.AutoClassName = B.AutoClassName) バックグラウンド サーバー2008 R2でMSSQL 2008 R2を使用 サーバーには8 GBのRAMがあります サーバーには1つのRAID10、7200 RPM SATAがあります(すばらしいですが、本番環境ではこれはデータの読み取りのみを行い、データの書き込みは行いません。さらに、最近のHDの不足により、コストのためにこれが必要になりました)。 サーバーにはデュアルクアッドコアXeon CPUが搭載されています マシンは他に何もしていません(現在は開発専用で、このプロセスのみ) 単純なロギングがオン(?-しかし、ロールバックできるようにログを記録しますか?) クエリは2つの異なるDBを参照することに注意してください。 更新されるテーブルのレコードの「幅」は455バイトです 実行中のリソース 物理RAMがいっぱいです ディスクI / Oが最大になりました CPUはほとんど何もしていません(チョークポイントはI / Oです) 実行時間は14時間で、カウントされています! 正規化の更新後に列(AutoClassName)を削除する場合でも、生データのインデックスが必要になるなど、いくつかのことが疑われます。また、JOINを開始するときにばかげて見えたJOINではなく、一度に1レコードずつテーブルをループダウンする必要があるのか​​どうかも疑問に思っていましたが、今はもっと高速だったようです。 残りの正規化更新(これと同様)の方法をより迅速に変更するにはどうすればよいですか?

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