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

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

2
データベースダイアグラムを表示するために必要な権限
最近、開発者が使用できるようにSSDTを設定しました。開発者データベースへの変更は、サーバー(db_datareader、db_datawriter)に接続したときに各開発者が持つ権限を制限することにより、SSDTを介して行われます。SSDT内では、昇格されたアクセス許可を持つログオンを使用して接続する展開スクリプトを使用して、データベースへの変更を公開します。 私の質問。データベースをロックダウンするために(スキーマのドリフトを停止するために)この長さになっていることを考えると、開発者がdb_owner権限なしでこのデータベースの図を表示できる方法はありますか?各開発者が自分の図を作成して表示できることは知っていますが、多くの異なる開発者が作成したすべての図を表示できるようにしたいと思っています。 これは役に立たないと思いますが、SQL Server 2012を実行しています どんな助けも大いに受けられます。

3
Express Editionのサイズ制限に達しているかどうかを確認するにはどうすればよいですか?
私は混乱しています。AFAIK SQL Server 2005 Expressには、4GBのデータベース データサイズの制限があります。ただし、次の結果が得られsp_spaceusedます。 DBがサイズ制限に達しているかどうかを確認するにはどうすればよいですか? 未割り当て領域はspace left制限に達するまでですか? 残りのスペースはどれくらいありますか? ないindex_size限度で数えますか?

5
SQL Server RAID 10とRAID 5のインストール
SQL ServerとVMSの設定は初めてです。私の前任者は、SQLインストールが存在するCドライブにはRAID 5を使用し、データベースファイルとデータベースログの両方にRAID 10を使用しました。 それが正しいのか、それとも代わりにRAID 5をSQLデータベースファイルに使用する必要があるのか​​と思いました。 何か助けは?


2
SQL Server AFTER INSERTトリガー
列のテキストmarriedで挿入が行われた後にこのトリガーを発生させたいmarital_status、これが今のところ ALTER TRIGGER [dbo].[marriage] ON [dbo].[applicant_personal_info] AFTER INSERT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; IF (SELECT [marital_status] FROM inserted) = 'married' BEGIN INSERT INTO [dbo].[applicant_marriage_info]([dom]) VALUES('abc') END END

3
リンクサーバーのリスク
複数のサーバー上のデータベースからのデータを必要とする新機能を実装しています。これらすべてのサーバーのデータを結合して並べ替えるだけです。頭に浮かぶ2つのオプションは次のとおりです。 リンクサーバーを使用して簡単なクエリを作成し、1つのサーバーから実行して他のサーバーからデータを収集するデータを結合して並べ替えます。 アプリケーションを使用してすべてのサーバーからデータを収集し、それをSQL Serverに返して並べ替えます(アプリケーションに並べ替えを実装しないでください)。 SQL Server 2008 r2では、アクティブ/アクティブクラスターでサーバーを実行しています。すべてのデータベースに同じ権限があり、1つのデータベース/サーバーにアクセスできる場合は、それらすべてに権限があります。これは一般向けアプリケーションです(ユーザーログインが必要です)。 リンクサーバーを使用するリスクは何ですか?心配すべきセキュリティ上の欠陥はありますか?アクティブ/アクティブクラスターでリンクサーバーを実行するときに問題はありますか?他の方法と比較して、パフォーマンスに重大な問題はありますか? リンクサーバーに関する一般的な否定的な「話題」があるようですが、実際に懸念があると思わせるような具体的な情報は見つかりません。

2
ログ配布-スタンバイを使用した復元-SQL Server 2012で壊れ続ける
RESTORE WITH STANDBYレポート目的でデータベースを読み取り専用モードで復元するために、ログ配布とSQL Server 2012を使用しています。ただし、ログ配布の設定は、1つまたは2つのログバックアップの復元が完了した後も壊れ続けます。ログ配布は、それがとして実行されている場合にのみ機能しRESTORE WITH STANDBYます。RESTORE WITH NORECOVERY問題はありません。 これに関する私の唯一の直感は、プライマリデータベースはそれほど動的ではないということです。したがって、トランザクションがない場合、これはRESTOREプロセスに問題を引き起こす可能性がありますか? アイデア、既知の修正? 2つのテーブルを頻繁に更新する定期的なジョブを実行することで、数日間は機能していました。ジョブがログ配布セットアップの実行を停止するとすぐに失敗し、.trnファイルを処理できませんでした。私はログ配布をリセットし、小さな更新を行って実行が継続するかどうかを確認しようとしました。テーブルの1つのレコードの1つの列の値を、失敗した場合でも変更しました。 ご回答いただきありがとうございます。 PS:ログからの抜粋 2013年2月25日13:00:00、LSRestore_DBDB01-A_BulldogDB、In Progress、1、DBREPORTS、LSRestore_DBDB01-A_BulldogDB、Log shipping restore log job step。,, 2013-02-25 13:00:12.31 ***エラー:ログバックアップファイル '\\ dbsan01 \ DBBackups \ LSBackup_BulldogDB \ BulldogDB_20130225180000.trn'をセカンダリデータベース 'BulldogDB'に適用できませんでした。(Microsoft.SqlServer.Management.LogShipping)*** 2013-02-25 13:00:12.31 ***エラー:データベース 'BulldogDB'のログの処理中にエラーが発生しました。可能であれば、バックアップから復元します。バックアップが利用できない場合は、ログを再構築する必要があるかもしれません。 リカバリ中にエラーが発生し、データベース 'BulldogDB'(8:0)を再起動できませんでした。回復エラーを診断して修正するか、既知の正常なバックアップから復元します。エラーが修正されない、または予期されない場合は、テクニカルサポートに連絡してください。 RESTORE LOGが異常終了しています。 ファイル1のデータベース「BulldogDB」ファイル「BulldogDB」の0ページを処理しました ファイル1でデータベース「BulldogDB」ファイル「BulldogDB_log」の1ページを処理しました(.Net SqlClientデータプロバイダー)*** 2013-02-25 13:00:12.32 ***エラー:履歴/エラーメッセージをログに記録できませんでした(Microsoft.SqlServer.Management.LogShipping)*** 2013-02-25 13:00:12.32 ***エラー:ExecuteNonQueryには、開いて利用可能な接続が必要です。接続の現在の状態は閉じています。(System.Data)*** …

1
式の型変換は、クエリプランの選択で「CardinalityEstimate」に影響を与える可能性がありますか?
パーティションビューに履歴データを格納するアーカイブデータベースを維持しています。パーティション化列は日時です。ビューの下の各テーブルには、1か月分のデータが格納されます。 各テーブルのイベントを、datetime列のチェック制約で制約します。これにより、オプティマイザは、イベント日時列でフィルタするクエリを検索するテーブルを制限できます。 チェック制約の名前はSQL Serverによって生成されているため、名前を確認しても何を行うかを知るのは困難です。 制約名を「CK_TableName_Partition」の形式にしたい。 このクエリを使用し、sql_text列からデータをコピーして、名前変更スクリプトを生成できます。WHERE句は、SQL Serverによって生成されたように見える名前のチェック制約に一致します。 SELECT checks.name AS check_name, tabs.name AS table_name, skemas.name AS schema_name, cols.name AS column_name, N' EXECUTE sys.sp_rename @objname = N''' + skemas.name + N'.' + checks.name + N''', @newname = N''CK_' + tabs.name + N'_Partition'', @objtype = ''OBJECT'';' AS sql_text FROM sys.check_constraints AS checks …

4
ギャップとアイランド:クライアントソリューションとT-SQLクエリ
ギャップとアイランドのT-SQLソリューションは、クライアントで実行されているC#ソリューションよりも速く実行できますか? 具体的には、いくつかのテストデータを提供します。 CREATE TABLE dbo.Numbers ( n INT NOT NULL PRIMARY KEY ) ; GO INSERT INTO dbo.Numbers ( n ) VALUES ( 1 ) ; GO DECLARE @i INT ; SET @i = 0 ; WHILE @i < 21 BEGIN INSERT INTO dbo.Numbers ( n ) SELECT n + …

1
無視されているSSIS 2008パッケージ構成
コマンドラインで/ ConfigFile something.dtsConfigを指定すると、2005年と比較して2008年にパッケージ構成が変更されるため、パッケージで定義された変数は、構成ファイルの設定を使用するのではなく、設計時の値を保持します。 外部設定ファイルを使用する方法を完全に理解しているのか、私にはよくわかりません。設定されている設計時の構成のみが外部ファイルの負荷を上書きするという記事を読みました。これは、変数を空の文字列に変更すると、上書きされることを意味しますか?変数を完全に削除することはできません!整数はどうですか? パッケージのパッケージ構成を使用してオフにすることについて言及している記事を見ました。 SSISパッケージエディターまたはXMLエディターを使用してパッケージ内の構成ファイルのパスを変更し、そのファイルの設定を "外部"(外部の/ ConfigFileオプションに関係なく)使用しますが、パッケージの変更。Test.dtsConfigとProduction.dtsConfigを含む1つのパッケージが必要で、パッケージを変更せずに前後にスワップできるようにします。 これを行うための推奨される方法は何ですか?

1
同じ行からの複数選択に対して、Union Allよりも優れたオプションはありますか?
スキーマの例: CREATE TABLE [dbo].[Base]( [ID] [int] IDENTITY(1,1) NOT NULL, [Option1ID] [int] NULL, [Option2ID] [int] NULL, [Option3ID] [int] NULL, [Option1Name] [varchar] NULL, [Option2Name] [varchar] NULL, [Option3Name] [varchar] NULL, [Option1LName] [varchar] NULL, [Option2LName] [varchar] NULL, [Option3LName] [varchar] NULL,) 次のように表示される結果を取得する方法はありますか? ID | OptionID | OptionName | OptionLName 私はUNION ALLを使用してこれを達成しようとしましたが、これは私の例では同じ行を3回処理することを意味し、実際の問題では10回実行する必要があります。レガシーコードのため、テーブルを正規化できません。ベース行を一度だけ超える方法はありますか?

2
単一のファイルグループでのパーティション分割
データベースに非常に大きなテーブルがいくつかありますが、このデータのかなりの部分が「古い」ものです。 私の制御が及ばない状況のため、この「古い」データを削除することは許可されていません。その他の制限は、データベースを変更できないことです。つまり、データベースにファイルグループを追加できます。現在の状態では、すべてがPRIMARYファイルグループに存在しています。 これらのテーブルを「新しい」、「古い」、「アーカイブ」などのいくつかのパーティションに分割することを考えていました。この目的で使用したい「ステータス」列があります。 説明されているシナリオと制限を考えると、パーティション分割がここで意味をなすかどうか疑問に思っていました。つまり、テーブルがこのようにパーティション化されているが、すべてのパーティションが同じファイルグループにある場合、SQL Serverは、「新しい」データが存在する基になるファイル内の特別な領域を見つけるのに十分スマートであり、 「古い」データのあるエリア? 言い換えると、私のデータの80%が「古い」としましょう。SQL Serverには、基になるファイルの100%へのアクセスを回避し、「新しい」データを含む20%のみにアクセスするメカニズムがありますか(もちろん、WHEREクエリの句でパーティション列を指定するとします)。 私はこれに答えると思います、パーティションが内部でどのように実装されているかを理解する必要があります。私はどんなポインタにも感謝します。

2
ミラーデータベースでのトランザクションログのメンテナンス
SQL Serverバージョン:2008 R2 Enterprise SP2 SQL Serverのメンテナンスを担当しているときに、間違っていると思われる問題に遭遇しました。それぞれがオフサイトでDRインスタンスにミラーリングされている3つのデータベースを持つ単一の本番インスタンスがあります。 DRインスタンスを調べていると、LDFファイルが巨大で、頻繁に使用されるデータベース用に35GBを超えることがわかりました。 これはおそらく、ミラーデータベースが完全復旧モードになっているためであり、ログはバックアップされたことがないため、ドライブの空き容量がなくなるまでログが増加し続けることを理解しています。 プリンシパルデータベースでログバックアップを実行していますが、ミラーでログバックアップを実行する際の注意点は何ですか。 ログバックアップを実行する前に、ミラーからの少なくとも1つのフルデータベースバックアップを完了する必要があります。その場合、ミラーであるため、使用する必要がある特別なオプションはありますか? 繰り返しますが、これはMIRRORデータベースでのトランザクションログのメンテナンスに関する推奨事項です。 ご意見ありがとうございます

1
統計を更新するときにサンプリングはどのように機能しますか?
私はいくつかの巨大なテーブルを持っています。毎週のメンテナンスプランを使用して、統計が最新であることを確認したいと思います。 ただし、これには時間がかかりすぎます。 指定した場合 WITH SAMPLE 50 PERCENT SQL Serverは次にサンプルを行います: ページの最初の50% 他のすべてのページ または他の戦略? BOLはこれについて明確ではありません。

3
MASTERデータベースを復元してTDE証明書を回復できますか?
(幸いなことに、私たちは現在このような状況にありません。それが発生した場合の選択肢がどうなるかを事前に計画しているだけです。) 透過的日付暗号化(TDE)で暗号化されたデータベースの場合、暗号化に使用した証明書のバックアップがない限り、データベースバックアップのコピーは回復できません。 それがない場合はどうなりますか?追加のオプションはありますか? 完全なサーバー障害が発生した場合、MASTERデータベースのバックアップを新しいハードウェアに復元すると、証明書も復元されますか?

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