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

Microsoft SQL Serverのすべてのバージョン(MySQL以外)。sql-server-2016のようなバージョン固有のタグも追加してください。これは、質問に関連することが多いためです。

1
サブクエリが並列処理を使用し、結合が使用しないのはなぜですか?
サブクエリを使用するこのクエリを実行するときに、SQL Serverが並列処理を使用するのはなぜですか?結合バージョンはシリアルで実行され、完了するまでに約30倍時間がかかります。 参加バージョン:〜30秒 副照会バージョン:<1秒 編集: クエリプランのXmlバージョン: JOINバージョン サブクエリバージョン

4
SQL Server 2008 R2エラー:15023、ユーザー、グループ、またはロールは既に存在します
権限の問題があるテストデータベースがあります。 レポートデータベースにアクセスできず、アプリケーションのヘルプドキュメントに次のことが記載されています。 Resolution: 1. Launch the SQL Server Management Studio and connect to the database server(s) hosting the Vision and Reporting Server databases. 2. Expand the security folder. 3. Select logins and right click on the <username> user and choose properties. 4. Click the User Mapping tab 5.Make sure the …

2
SQL Server 2012の新しいDB名へのバックアップの復元
2008年に、復元ウィザードの[接続先データベース]フィールドの名前を変更することで、DBの新しいコピーにバックアップを復元できることを覚えているようです。これにより、新しいDBが作成されます。これは、元のDBのコピーであり、必要な時点に復元されます。私は、SQL 2012でこれを行う方法を理解していませんでした。 今、私は(アーロン・バートランドのおかげで)これは実際には変わらなかったことを理解し、2012年はこの戦略がそもそも悪い考えであったことを実際に私に明らかにしている! そのため、私がする必要があるのは、バックアップファイルを使用して、既存のデータベース「MyDB」から新しいデータベース「MyDB_Copy」を作成することです。毎晩の完全バックアップ(.bak)と15分ごとのTLog(.trn)があります。既存の「MyDB」が「ライブ」であるため、まったく影響を受けたり触れられたりしたくない。 メインのフルバックアップファイルからMyDB_Copyを作成した後、特定の時点に戻すために、数十個のTLogバックアップを復元する必要があります。

3
IDENTITY値をリセット
IDENTITY列のあるテーブルがあります。開発中に、時々行を削除し、再度追加します。しかし、IDENTITY値は常に増加し続け、それらを再度追加したときに1から始まっていませんでした。私のIDは68から> 92になり、これによりコードがクラッシュします。 IDENTITY値をリセットするにはどうすればよいですか?

1
SQL Server nvarchar(max)vs nvarchar(n)はパフォーマンスに影響します
これはSQL Server 2008 R2 SP2です。2つのテーブルがあります。どちらも同じです(データとインデックス)。ただし、最初のテーブルにはVALUE列がnvarchar(max)あり、2番目のテーブルにはと同じ列がありnvarchar(800)ます。この列は、非クラスター化インデックスに含まれています。また、両方のテーブルにクラスター化インデックスを作成しました。インデックスも再構築しました。この列の最大文字列長は650です。 両方のnvarchar(800)テーブルに対して同じクエリを実行すると、一貫して高速になり、何倍も高速になります。確かに、「varchar」の目的を無効にしているようです。テーブルには800,000行以上が含まれます。クエリでは、約110,000行(これが計画の推定値)を確認する必要があります。 io統計によると、lobの読み取りはないため、すべてが並んでいるように見えます。実行計画は同じですが、2つのテーブルのコストの割合にわずかな違いがあり、推定行サイズが大きいnvarchar(max)(91バイト対63バイト)ことを除いて。読み取り回数もほぼ同じです。 なぜ違いがあるのですか? =====スキーマ====== CREATE TABLE [dbo].[table1]( [ID] [bigint] IDENTITY(1,1) NOT NULL, [ProductID] [bigint] NOT NULL, [ProductSkeletonID] [bigint] NOT NULL, [Value] [nvarchar](max) NOT NULL, [IsKeywordSearchable] [bit] NULL, [ValueInteger] [bigint] NULL, [ValueDecimal] [decimal](18, 2) NULL, [ValueDate] [datetime] NULL, [TypeOfData] [nvarchar](20) NOT NULL, CONSTRAINT [PK_table1] PRIMARY KEY …

7
WITH REPLACEを使用してバックアップを復元しているときのエラー3154
コンピューターにSQL 2012 SP1がインストールされています。データベースのバックアップを作成しましたtest.bak。 test2同じデータベースと同じ名前のデータベースがありますが、データが変更されました。 データベースをtest.bak介して復元したいtest2。 私は常にエラーが発生しています: エラー3154:バックアップセットには、既存のデータベース以外のデータベースのバックアップが含まれています。 私は試した: 私は右クリックしました test2 -> Restore database -> From device 選択test.bakして確認しましWith Replaceたが、エラーが発生します。 次に、右クリックしてみました test2 -> Restore file and filegroups 選択test.bakして確認しましWith Replaceたが、エラーが発生します。 古いデータベースを削除してから正しい名前でバックアップを復元できますが、SQL 2008を使用していたときは、既存のデータベースを復元しても問題はありませんでした。 SQL2012を使用しているため、このエラーが頻繁に発生するようです。

4
SQLスクリプトの実行を中断する方法
私はSQLスクリプトに取り組んでおり、いくつかの条件が満たされない場合、スクリプトの継続を停止する必要があります。 GoogleでGoogleを検索したところ、重大度が20のRaisErrorが終了することがわかりました。しかし、いくつかの理由で、私はそのオプションを使用できません。 SQLスクリプトの実行を停止する可能な代替手段を教えてください。

2
WHERE句で変数を使用しないようにする方法
次のような(簡略化された)ストアドプロシージャがある場合: CREATE PROCEDURE WeeklyProc(@endDate DATE) AS BEGIN DECLARE @startDate DATE = DATEADD(DAY, -6, @endDate) SELECT -- Stuff FROM Sale WHERE SaleDate BETWEEN @startDate AND @endDate END Saleテーブルが大きい場合、SELECTローカル変数が原因でオプティマイザが最適化できないため、実行に時間がかかる可能性があります。SELECT変数を使用してパーツを実行し、日付をハードコードし、実行時間を約9分から約1秒にテストしました。 「固定」日付範囲(週、月、8週など)に基づいてクエリを実行する多数のストアドプロシージャがあるため、入力パラメータは@endDateのみで、@ startDateはプロシージャ内で計算されます。 問題は、オプティマイザを危険にさらさないために、WHERE句の変数を避けるためのベストプラクティスは何ですか? 私たちが思いついた可能性を以下に示します。これらのベストプラクティスのいずれか、または別の方法がありますか? ラッパープロシージャを使用して、変数をパラメーターに変換します。 パラメーターは、ローカル変数と同じようにオプティマイザーに影響しません。 CREATE PROCEDURE WeeklyProc(@endDate DATE) AS BEGIN DECLARE @startDate DATE = DATEADD(DAY, -6, @endDate) EXECUTE DateRangeProc @startDate, @endDate …

2
無期限のWAITFORを起動すると、ログファイルのサイズが増加しますか?
アプリの前回のリリースでは、Service Brokerキューに何かが到着したときに待機するように指示するコマンドを追加しました。 WAITFOR (RECEIVE CONVERT(int, message_body) AS Message FROM MyQueue) DBAは、追加以来、ログサイズが屋根を通過したことを教えてくれました。これは正しいですか?それとも私は他の場所を探すべきですか?

2
一時テーブルでvarcharサイズは重要ですか?
ストアドプロシージャの一時テーブルのvarchar(255)すべてのvarcharフィールドに使用することについて、妻の仕事について議論があります。基本的に、一方のキャンプは定義が変更されても常に機能するため255を使用し、もう一方のキャンプは潜在的なパフォーマンス向上のためにソーステーブルのサイズを維持したいと考えています。 パフォーマンスキャンプは正しいですか?他に影響はありますか?彼らはSQL Serverを使用しています。

3
SQL Server NTFSアロケーションユニットサイズ
SQL Server 2008 R2を実行しているWindows 2008 R2では、DISK IOのパフォーマンスに対するNTFSアロケーションユニットサイズはどれほど重要ですか。ミッションクリティカルなアプリ用に数台のサーバーを構築したサーバー管理者は、NTFSアロケーションユニットサイズ(クラスターサイズ)をデフォルトの64 KBではなく4 KBのままにしたようです。SQLサーバーは既にインストールされています。 SQLをアンインストールするために苦労する価値はありますか?64 KBのクラスターサイズでドライブをフォーマットし、SQLサーバーを再インストールしますか?

3
SAN環境でSQLインデックスを最適化することに利点はありますか?
SQLサーバーはSAN上にあります。多数のOLTPデータベースが含まれており、一部には1m以上のレコードを含むいくつかのテーブルがあります。 私たちは、実行されているオラHallengrenの索引メンテナンススクリプトを毎週、そしてそれは、数時間ごとに実行されます。断片化のしきい値に基づいて、スクリプトはインデックスを再編成または再インデックス化します。インデックスの再作成中にログファイルが膨大になり、ログ配布中に帯域幅が過剰に消費されることが確認されています。 次に、ブレント・オザールからの記事があります。彼はSQLインデックスについて心配するのをやめると言っています。 ハードドライブは、同時にドライブリクエストを行っている他のサーバーと共有されるため、ドライブは常にデータを取得するためにあらゆる場所でジャンプします。インデックスの最適化は、無意味な忙しい作業です。 この質問をググリングすると、さまざまな意見につながりますが、ほとんどが短すぎるか弱すぎると思われる議論でサポートされています。暫定的な計画では、メンテナンススクリプトの断片化のしきい値を調整して、インデックスの再作成よりもはるかに頻繁に再編成するようにします。 最終的な判定は何ですか?毎週のメンテナンスジョブの実行に伴う負担を考慮して、SANでSQLインデックスを最適化することは価値がありますか?

3
SQL Server LocalDBインスタンス。バックアップの復元エラー(MasterDBPathは利用できません)
SQL Server 2012ローカルDBがインストールされており、(localdb)\ v11.0を介して接続しています。 バックアップファイルを復元しようとすると、次のメッセージが表示されます。 TITLE:Microsoft SQL Server Management Studio プロパティMasterDBPathは、情報 'Microsoft.SqlServer.Management.Smo.Information'では使用できません。このプロパティは、このオブジェクトには存在しないか、不十分なアクセス権のために取得できない可能性があります。(Microsoft.SqlServer.Smo) ヘルプが必要な場合は、http://go.microsoft.com/fwlink?ProdName = Microsoft + SQL + Server&ProdVer = 11.0.2100.60 +((SQL11_RTM).120210-1846 +)&EvtSrc = Microsoft.SqlServer.Management.Smo.ExceptionTemplatesをクリックして ください.PropertyCannotBeRetrievedExceptionText&EvtID = MasterDBPath&LinkId = 20476 私はMasterDBPath文字列値を次の場所に設定しようとしました: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL11E.LOCALDB\MSSQLServer\CurrentVersion` しかし、これは助けにはなりませんでした。 誰もが考えている?
16 sql-server 

2
SQL Server-成長するデータベースファイルのベストプラクティス
私は、SQL Server 2008 r2のデータコレクターを介して2週間、ファイルの増加を監視しています。データベースは、約35(MB)/日で一貫して成長しています。DBは初期サイズの2 GBにまだ達していません。 DBファイルの自動拡張は5MBに設定されています。別のアプローチを試してみたいので、提案やコメントを探しています。 毎週日曜日の夜1:30 AMに実行されるチューニングタスクがあります。タスクは: データベースの整合性を確認する ログファイルを圧縮する-(ログモードがシンプルなので、これは問題ありません) データベースの縮小 インデックスの再編成 インデックスを再構築 統計を更新する 履歴をクリーンアップする 毎週の調整計画にさらに2つのステップを追加したいと思います。 使用領域が特定のしきい値または合計サイズに達した場合、データベースファイルを500 MB増やします。 使用されているスペースが合計サイズの特定のしきい値に達すると、ログファイルを250 MB(縮小後)増やします。 オフラインの時間に成長の負担をかけることにより、高負荷時の自動成長イベントの数を減らしてパフォーマンスを向上させたいと考えています。 自動拡張ファイルに関する質問が2つあります。 ファイルの成長ステップを配置する最適な場所は、現在のステップの前か後ですか? を使用しALTER DATABASE|MODIFY FILEてファイルを拡大すると、どうすれば判断できSpaceUsedInFile >= (TotalFileSpace-@AllowanceThreshold)ますか?


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