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

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

3
データベースをオフラインにせずにログファイルを移動する
データベースをオフラインにせずに、データベースログファイルを新しいパーティションに移動する必要があります。 これを行う通常の方法は、DBをデタッチし、ログファイルを移動してから、dbを再アタッチすることです。 データベース自体をオフラインにせずにこれを行うことは可能ですか?

1
SQL Server多対1レプリケーション
8つの個別のSQL Server 2008 R2マシンがあり、それぞれが1つのデータベースをホストしています。各データベースには、同一のテーブル構造とスキーマ、および完全に一意のデータがあります。 レポートサーバー(2008または2012)を確立して、8つのソースサーバーの選択したテーブルの行をレポートサーバー上のそれらのテーブルの単一インスタンスに統合します。これは一方向のレプリケーションです(レポートサーバーは変更されません)。比較的低いレイテンシ(20〜30秒など)でソースデータベースから変更を複製する必要があります。 さらに、ソースサーバーへの影響をできるだけ少なくしてこれを実現する方法を見つけたいと思います。これらのサーバーに対するサードパーティのエージェント、トリガー、またはスキーマの変更は、私の環境では困難です。 私の質問: この目標を達成するための有望なアーキテクチャとテクノロジーは何ですか? SQL Serverマージレプリケーションを見てきましたが、遅延が心配です。これはこの目標に適した技術ですか? トランザクションレプリケーション用の多対1のアーキテクチャはありますか? レポートサーバー上の8つのデータベースへの1対1のレプリケーションと、それに続くカスタムマージ機能(2ステップレプリケーション)を検討する必要がありますか? ありがとう、ジョン

5
SQL Serverに、記述されたクエリ条件を強制的に実行しますか?
私はSQL Server 2008 R2を使用していますが、この疑似クエリ(SP)があります: select ... from ... WHERE @LinkMode IS NULL AND (myColumn IN (...very long-running query...)) ... ... 問題は、クエリを実行するのに非常に長い時間がかかること@LinkMode=2です。 お気づきのように、@ LinkModeがnullの場合にのみ長時間実行クエリを実行する必要がありますが、ここではそうではありません。私の場合、@ LinkMode = 2! ただし、次のように変更すると: select ... from ... WHERE 1=2 AND (myColumn IN (...very long time exeted query...)) ... ... SP は高速で実行されます。 以前に、オプティマイザーが条件の順序を最適化できることを聞いたことがあります。 だから私は尋ねる: オプティマイザが別のルートを選択した場合でも、次のことを確認するよりも高速なのは何=nullですか?私が意味する、私はそのチェックが考えるif a==nullあるずっと速く、他の長いクエリを実行するよりも... どのように私がすることができます強制、私はそれ(同じ順序)書いたとして、クエリを実行するために、SQL …



5
TRY-CATCHでキャッチされないリンクサーバーエラー
リンクサーバーのリストをループし、各サーバーに対して特定のクエリを実行するジョブを設定しています。TRY-CATCHブロック内でクエリを実行しようとしているので、特定のサーバーに問題がある場合はログに記録できますが、他のサーバーで続行します。 ループ内で実行しているクエリは次のようになります。 BEGIN TRY SELECT * FROM OPENQUERY([server1], 'SELECT 1 AS c;'); END TRY BEGIN CATCH SELECT ERROR_NUMBER(), ERROR_MESSAGE(); END CATCH; PRINT 'We got past the Catch block!'; サーバーへの接続に問題がある場合、コードはただちに失敗し、CATCHブロックに転送されません。サーバーは接続しているが、実際のクエリにエラーがある場合(ゼロ除算など)、CATCHブロックで期待どおりにキャッチされます。 たとえば、存在しないことがわかっている名前でリンクサーバーを作成しました。上記を実行するとき、私はちょうど得る: OLE DB provider "SQLNCLI" for linked server "nonserver" returned message "Login timeout expired". OLE DB provider "SQLNCLI" for linked server …

1
システムテーブルから選択する許可を与える
データベースMicrosoft SQL Server 2008 r2があります。メインデータベースのテーブルにアクセスできるmarieというユーザーが定義されています。これはうまく機能します。ここで、marieがこのクエリを実行できるようにしたいと思います。 SELECT resource_type,spid,login_time,status,hostname,program_name,nt_domain,nt_username,loginame FROM sys.dm_tran_locks dl JOIN sys.sysprocesses sp on dl.request_session_id = sp.spid 関連するテーブルはマスターテーブルです。マリーに彼らから読む許可を与えるにはどうすればいいですか?私はすでにdboとして以下を実行しようとしました: GRANT ALL on sys.dm_tran_locks TO marie GRANT ALL on sys.sysprocesses TO marie それでも、marieが上記のクエリを実行しようとすると、エラーは次のようになります。 Msg 297, Level 16, State 1, Line 1 The user does not have permission to perform this action. 私は何を間違えていますか?
14 sql-server 

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

3
サービスマスターキーをバックアップする必要があるのはいつですか?
トランスペアレントデータ暗号化に関するドキュメントとホワイトペーパーを読んでいます。一部のドキュメントでは、サービスマスターキーのバックアップについても言及されています(説明のため、データベースマスターキーについては説明していません)。サービスマスターキーを使用せずに、サーバーA(バックアップ)からサーバーB(復元)にTDE暗号化を使用してデータベースをバックアップ/復元できたため、なぜこれが必要なのか正確に理解していません。 どのようなシナリオでサービスマスターキーを復元する必要がありますか?

3
並列統計更新
SQL Server 2008以降ではUPDATE STATISTICS WITH FULLSCAN、シングルスレッド操作ですか、それとも並列処理を使用できますか?デフォルトのサンプリングによる統計の更新はどうですか?並列処理を使用できますか?MAXDOPupdate statsで指定するオプションが表示されません。

2
データベースの復元を削除する方法
SQL Server 2008 R2でログ配布を実行しています。 セカンダリデータベースドライブの領域が不足し、ログ配布トランザクションログを適用していなかった状況があります。 これを修正する方法は、セカンダリでデータベースを削除し、ログ配布をゼロから構成することです。 現在の問題は、セカンダリデータベースが復元状態にあり、削除できないことです。どうすれば続行できますか? たとえば、オフラインにしようとすると、エラーが発生します。 ALTER DATABASE is not permitted while the database is in the Restoring state.

2
単一のビューへのアクセス権を持つユーザーを追加するにはどうすればよいですか?
MSSQL Server Management Studio 2008を使用していますが、データ調整のためにビューをサードパーティに公開する必要があります。適切なビューを作成しましたが、ユーザーを作成して、そのユーザーにビューから選択するための適切なアクセス許可を与えることができません。 ウィザードに従ってログインとユーザーを作成し、[選択可能]チェックボックスをオンにして[セキュリティ保護可能]セクションにビューを追加しました。すべてが順調に見えましたが、そのユーザーとしてログインして「Select * from MyViewName」を実行しようとすると、選択権限が拒否されたことがわかりました。 私はユーザーを再作成し(今回はウィザードの代わりにSQLを使用するだけです)、選択権限を明示的に付与しましたが、今ではエラーが発生しています:( Msg 916, Level 14, State 1, Line 2 The server principal "username" is not able to access the database "unrelated_db" under the current security context.無関係なデータベースにアクセスしようとする理由がわかりません...) ここからどこに行くべきか本当にわかりません。繰り返しますが、基本的に必要なのは、サードパーティにデータベースに接続してこのビューから選択させるために、サードパーティに提供できるユーザーを作成することです。

1
フィルファクターに基づくインデックス内のデータの動作
デフォルトのFILL FACTORが20のデータベースがあるとします。データが挿入されるたびに、最大20%のページのみが作成されますか? 私の理解では、データが挿入されると、ページ内のデータの約20%になります。ただし、データが更新されると、インデックスの20%以上に拡張され、データがいっぱいになってページ分割が生成されます。

3
フルテキストインデックスのあるテーブルで、単純なALTER TABLEコマンドが非常に長い時間がかかるのはなぜですか?
列にフルテキストインデックスが作成された大きな名前(〜6700万行)の名前と値のテーブルがありDataValueます。 次のコマンドを実行しようとすると: ALTER TABLE VisitorData ADD NumericValue bit DEFAULT 0 NOT NULL; 1時間10分間実行されVisitorDataますが、約6,700万行を含むテーブルでは完了しません。 なぜこれに時間がかかり、完了しないのですか? 私はそれについて何ができますか? 表の詳細は次のとおりです。 CREATE TABLE [dbo].[VisitorData]( [VisitorID] [int] NOT NULL, [DataName] [varchar](80) NOT NULL, [DataValue] [nvarchar](3800) NOT NULL, [EncryptedDataValue] [varbinary](max) NULL, [VisitorDataID] [int] IDENTITY(1,1) NOT NULL, CONSTRAINT [PK_VisitorData_VisitorDataID] PRIMARY KEY CLUSTERED ( [VisitorDataID] ASC ) WITH (PAD_INDEX …

2
SQL ServerのVARCHAR列幅
Webを検索すると、過度に広いVARCHAR列を指定したときにパフォーマンスに影響があるかどうか、たとえばVARCHAR(30)がおそらくする場合のVARCHAR(255)について、矛盾したアドバイスが見つかりました。 行全体が8060バイトを超えると、パフォーマンスが低下するという合意に一貫して同意します。それ以外は、意見の相違があります。 その主張は本当The default is SET ANSI PADDING ON = potential for lots of trailing spacesですか?行の合計幅が8060未満である限り、VARCHAR列のサイズを大きくすることで実際のパフォーマンスの懸念はありますか? 列幅が重要であることの証拠 The same goes for CHAR and VARCHAR data types. Don’t specify more characters in character columns that you need. http://www.sql-server-performance.com/2007/datatypes/ Length is a constraint on the data (like CHECK, FK, NULL etc) Performance …

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