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

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

2
SQL Serverバックアップを圧縮して保存する最も効果的な方法は何ですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、データベース管理者のスタック交換のトピックになるようにします。 6年前休業。 私はSQL Serverバックアップを圧縮および保存するためのさまざまな方法のテストをいくつか行っています(SQL Server 2008 R2 Enterpriseエディションを使用)。SQLの外部でこれらのバックアップを長期的に保存するための最も効果的な圧縮アルゴリズムは何かと思います。内部圧縮アルゴリズム。 私は、物理ストレージやテープドライブなどについて心配していません。3TBのデータファイルとログファイルを、可能な限り最小の単一ファイルに変換しようとしています。 たとえば、.zipまたは.7zでしょうか?または、データベース内の変数が多すぎて、何が最も効果的であるかを正確に推定できず、いくつかのテストを実行するだけで済みますか?または、SQL Serverの内部圧縮は私が得られる最高のものですか?

2
デフォルトのトレースは有効ですがアクティブではありません
デフォルトのトレースの構成を照会すると、有効になっていることが表示されます。 exec sp_configure 'default trace enabled'; --> name minimum maximum config_value run_value default trace enabled 0 1 1 1 しかしsys.traces、パスを照会すると、空の行セットが返されます。 select * from sys.traces; 有効なトレースが存在しない理由は何ですか?

2
関数がnullケース操作でハングする
開始日と終了日を受け入れる関数を作成しました。終了日はオプションです。次にCASE、終了日が渡されない場合に開始日を使用するようにフィルターにを記述しました。 CASE WHEN @dateEnd IS NULL THEN @dateStart ELSE @dateEnd END データの最新の月の関数を呼び出すと: SELECT * FROM theFunction ('2013-06-01', NULL) ...クエリがハングします。終了日を指定した場合: SELECT * FROM theFunction ('2013-06-01', '2013-06-01') ...結果は正常に返されます。関数からコードを取り出し、クエリウィンドウ内で正常に実行しました。フィドルの問題も再現できません。次のようなクエリ: SELECT * FROM theFunction ('2013-04-01', '2013-06-01') ...も正常に動作します。 NULL終了日にa が渡されたときに関数がハングする原因となる可能性のあるクエリ(下記)はありますか? SQLフィドル 実行計画についてSELECT * FROM theFunction ('2013-06-01', '2013-06-01') 見積計画についてSELECT * FROM theFunction ('2013-06-01', NULL)

3
トランザクションレプリケーションのID範囲の処理
トランザクションレプリケーションを設定すると、SQL ServerがID範囲の管理を手動に設定することに気付きました。つまり、サブスクリプションデータベースで、PKがID列であるテーブルに新しいレコードを挿入しようとすると、エラーが発生し、「1」、「2」のPKを挿入しようとしたと表示されます。 "、" 3 "などです。これは、サブスクライバーのすべてのID列の現在のID値が、パブリッシャーの状態に留まるのではなく、シード値(通常は1)にリセットされるためです。 SQL Serverがこれを行う理由を理解しました。サブスクライバーテーブルを読み取り専用のままにすることになっています。ただし、私のシナリオは少し正統ではありません-レプリケーションを通じて時々サブスクライバーを更新し、そのDBの即時バックアップを作成してから、サブスクライバーにいくつかの更新を実行して、パブリッシャーにプッシュバックされないようにします。サブスクライバを再度更新するときに、以前のバックアップからデータベースを復元し、最新の更新を取得します。これらの更新の間にサブスクライバーを更新したいので(可能であれば「一時的なデルタ」)、レプリケート時にID列が機能し、1にリセットされないようにする必要があります。 パブリケーションの設定時に自動ID範囲管理をオンにしようとしましたが、パブリケーションにテーブルを追加しようとすると、次のエラーが表示されます。 メッセージ21231、レベル16、状態1、プロシージャsp_MSrepl_addarticle、行2243 自動ID範囲のサポートは、サブスクライバーの更新を許可するパブリケーションでのみ役立ちます。 この問題を回避する方法はありますか?このレプリケーションをサブスクライバー側で読み取り専用であるかのようにSQL Serverに提示したいのですが、パブリッシャーにプッシュバックされる更新を行う予定はありませんが、一時的な更新を行います次の複製の前に消去されます。 スナップショットレプリケーションは、私の使用パターンではトランザクションレプリケーションよりも適切な方法であると考えましたが、問題は、スナップショットレプリケーションでは、更新ごとにすべてのデータベースを送信する必要があることです。最新のレプリケーションの後でDBの即時バックアップを取ることを計画しているため、毎回転送全体を実行する必要はありません。前回からの変化だけです。

2
RAMの増加、パフォーマンスの低下
セットアップ: Windows Server 2008 R2 SQL Server 2008 R2 SP1 240GB RAM TempDBは自動拡張なしの8x16GBデータファイル(合計128GB) 物理/スタンドアロンサーバー このサーバーは、ETL処理に使用されます。このサーバーに追加のRAMを追加しただけで、合計で240GBのRAMになります。SQL Serverサービスのみが実行されています。 メモリは、BIOS、OpenManage、およびWindowsで正常に表示されます。 70 / 100GBのメモリの最小/最大を使用するようにSQL Serverを構成した場合、問題はありません。ただし、それを120 / 150GBに増やすと、ETLプロセスの1つを実行すると次のエラーが発生します。 'PRIMARY'ファイルグループがいっぱいのため、データベース 'tempdb'のオブジェクト '<temporary system object:422234507706368>'に領域を割り当てることができませんでした 不要なファイルを削除するか、ファイルグループ内のオブジェクトを削除するか、ファイルグループにファイルを追加するか、ファイルグループ内の既存のファイルに対して自動拡張をオンに設定して、ディスク領域を作成します。(メッセージ1105、状態2、手順不明、行1) メモリ構成を変更する前に、この問題に遭遇したことはありません。元の70 / 100GBに再構成した後、このエラーは発生しません。 私が試したこと: TempDBデータファイルを自動拡張に設定します。これにより、ディスク容量に達するまでファイルが自動拡張され、失敗するだけです。 TempDBデータファイルをさらに追加します。示されているのと同じエラー。 TempDBのサイズを8x32GB(合計256GB)に増やします。 この問題の原因は何なのか途方に暮れています。

2
SQL ServerジョブでのトランザクションとTry-Catch
SQL Serverジョブの各ステップにはDML操作があります。更新を確保するために/挿入は、何かがうまくいかない場合にはロールバックされます、私はのデータ修正包まれている各ステップをにTRY CATCHしてTRANSACTIONブロック: BEGIN TRY BEGIN TRANSACTION [[INSERT/update statements]] ... IF @@TRANCOUNT > 0 BEGIN COMMIT TRANSACTION PRINT 'Successful.' END END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity, ERROR_STATE() AS ErrorState, ERROR_PROCEDURE() AS ErrorProcedure, ERROR_LINE() AS ErrorLine, ERROR_MESSAGE() AS ErrorMessage IF @@TRANCOUNT > 0 BEGIN ROLLBACK TRANSACTION …

1
SQL Server 2008 R2セットアップクライアントツール接続
SQL Server 2008 R2のセットアップ中に、「クライアントツールの接続性」と「クライアントツールの下位互換性」のインストールオプションのチェックボックスが表示されます。これらはクライアントサーバー通信のコンポーネントであると述べています。誰でもこれらのコンポーネントについて説明できますか?これらのコンポーネントを選択したときにサーバーに実際にインストールされるもの。


2
SQL Serverは外部キー参照のインデックスキーをどのように選択しますか?
MS Accessからインポートされたレガシーデータベースを使用しています。MS Access> SQL Serverのアップグレード中に作成された、クラスター化されていない一意の主キーを持つ約20のテーブルがあります。 これらのテーブルの多くには、主キーの複製である一意の非クラスター化インデックスもあります。 私はこれを片付けようとしています。 しかし、主キーをクラスター化インデックスとして再作成した後、外部キーを再構築しようとすると、外部キーが(重複していた)古い重複インデックスを参照しています。 重複したインデックスを削除できないため、これを知っています。 SQL Serverでは、主キーが存在する場合は常にそれを選択すると思います。SQL Serverには、一意のインデックスと主キーの間で選択する方法がありますか? 問題を再現するには(SQL Server 2008 R2の場合): IF EXISTS (SELECT * FROM sys.tables WHERE name = 'Child') DROP TABLE Child GO IF EXISTS (SELECT * FROM sys.tables WHERE name = 'Parent') DROP TABLE Parent GO -- Create the parent table CREATE …

2
SQL Serverは行ごとに関数を1回評価しますか?
次のようなクエリがあります。 SELECT col1 FROM MyTable WHERE DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE())) BETWEEN col2 AND col3 ; これにより、次のような実行プランのツールチップが表示されます。 dateadd求める述語の一部は、クエリ内のすべての行に対して実行されますか?または、SQL Serverはクエリ全体の値を1回計算しますか?

5
RESTORE DATABASEイベント後にストアドプロシージャを自動的に実行する
それが持っていることが可能であるSQL Server 2008 R2の標準が自動的にされる任意のデータベースにストアド・プロシージャを実行復元またはattachcedインスタンスに? DDLイベントの後、CREATE_DATABASEまたはALTER_DATABASE起動された後に、特定のデータベースでストアドプロシージャを実行するサーバーレベルのトリガーを作成することで、ソリューションに近づきました。残念ながら、これはデータバックバックアップの復元では機能しません。 詳しく説明すると、復元するすべてのデータベースに存在する「クリーンアップ」ストアドプロシージャがあり、バックアップがインスタンスに復元されるたびにこれを自動的に実行する方法を探しています。 グーグルによって、SQL Serverで監査またはポリシーを構成してこの機能を取得するよう指示されましたが、これらの機能は一見すると非常に圧倒されるため、監査または警察が調査を開始するための手段であるかどうかわかりません。

3
テーブルの列の順序を識別する方法
テーブルの列をテーブル定義順にリストする必要があります。 select * from syscolumns where id = object_id('MyTable') --order by colid 調べることでsyscolumns、テーブルの2つの列は、関連を見て:colidとcolorder。syscolumnsに関するMSDNの記事によれば、 colid | smallint | Column or parameter ID. colorder | smallint | Identified for informational purposes only. | Not supported. Future compatibility is not guaranteed. 走ってみた select * from syscolumns where colorder <> colid これは行を生成しなかったので、これらの列にはほとんどの場合同じ値があると思います。 最も安全な方法は、colidを使用することです。しかし、私は知りたいと思います:これらの2つの列の間に違いはありますか、ある場合、この違いは何ですか? また、MSDNの記事では、colidがテーブル定義の順序を反映していることは確認されていません。これが事実であると想定することは合理的ですが、そうであると確信している場合、どのようにこれがそうであるかをどのようにして知ることができますか?

2
SQL Serverトランザクションタイムアウト
SQL Server 2008 R2には、トランザクションを含むデータベース変更のタイムアウトを引き起こす方法はありますか?アプリケーションコードがハングまたは例外をスローし、ロールバックまたはコミットの実行に失敗するシナリオがあります。これにより、トランザクションが完了するまで他のセッションがハングします。

4
SQL 2008 R2は、Windowsユーザーがテーブルを作成するときにユーザー/スキーマを作成します
次のスクリプトを使用して、WindowsグループをSQL 2008 R2インスタンスにマップするサーバーログインとデータベースユーザーを追加しました。匿名のために名前を変更しました。 USE master go CREATE LOGIN [DOMAIN\AppUsers] FROM WINDOWS WITH DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english] go USE AppDb go CREATE USER [DOMAIN\AppUsers] FOR LOGIN [DOMAIN\AppUsers] go EXEC sp_addrolemember N'db_owner', N'DOMAIN\AppUsers' go DOMAIN \ User1アカウントがアプリにログオンすると、User1はDOMAIN \ AppUsersのメンバーであるため、User1はdboスキーマのテーブルに問題なくクエリを実行しますが、このアプリではユーザーがテーブルを作成することもできます。スキーマを指定せずにこれらのテーブルを作成すると、SQL Serverは次のことを行います。 インスタンスのSSMS \ Security \ Loginsにリストされていない 'DOMAIN \ User1'ログインを使用するAppDbに 'DOMAIN \ User1'ユーザーを作成します。 AppDbに「DOMAIN \ User1」スキーマを作成します。 …

3
作成時にデータベース照合を変更するトリガー
トリガーを作成して、作成時にデータベースの照合を変更しようとしていますが、トリガー内で使用するデータベース名をキャッチするにはどうすればよいですか? USE master GO CREATE TRIGGER trg_DDL_ChangeCOllationDatabase ON ALL SERVER FOR CREATE_DATABASE AS declare @databasename varchar(200) set @databasename =db_name() ALTER DATABASE @databasename COLLATE xxxxxxxxxxxxxxxxxxx GO 明らかに、これは機能していません。

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