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

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

5
アタッチ/デタッチ対バックアップ/復元
データベースを(全体として)別のサーバーに転送して、別のテスト環境をセットアップするために複製データベースを作成する必要があります。 次の2つの選択肢があります。 ソースサーバーで完全バックアップを作成/ターゲットサーバーで復元。 移行元サーバーで切断/移行先サーバーで接続。 要件に応じた2つのソリューションの長所と短所は何ですか? SQL Server 2008 Enterpriseを使用しています。

2
SQL Serverは、システムで生成された制約名に競合を作成できますか?
SQL Server 2008データベース(非クラスター化)に数百万のテーブルを作成するアプリケーションがあります。SQL Server 2014(クラスター化)にアップグレードしようとしていますが、負荷がかかっているときにエラーメッセージが表示されます。 「データベースに「PK__tablenameprefix__179E2ED8F259C33B」という名前のオブジェクトが既に存在します」 これは、システムで生成された制約名です。ランダムに生成された64ビットの数字のように見えます。多数のテーブルが原因で衝突が発生している可能性はありますか?テーブルが1億個あると仮定すると、次のテーブルを追加するときに衝突が発生する可能性は1兆分の1未満ですが、それは均一な分布を前提としています。衝突の可能性を高めるために、SQL Serverがバージョン2008と2014の間で名前生成アルゴリズムを変更した可能性はありますか? もう1つの重要な違いは、2014年のインスタンスがクラスター化されたペアであることですが、上記のエラーが発生する理由の仮説を立てるのに苦労しています。 PSはい、何百万ものテーブルを作成するのは非常識です。これは、私が制御できないブラックボックスのサードパーティコードです。狂気にもかかわらず、バージョン2008では機能しましたが、現在はバージョン2014では機能しません。 編集:詳細な検査では、生成されたサフィックスは常に179E2ED8で始まるようです-つまり、ランダムな部分は実際には32ビットの数字であり、衝突の確率は新しいテーブルが追加されるたびに50分の1です私が見ているエラー率にはるかに近い一致です!


1
UPSERT-MERGEまたは@@ rowcountに代わるより良い代替手段はありますか?[閉まっている]
ここで何が尋ねられているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的であり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 7年前に閉鎖されました。 UPSERTの概念に似たT-SQLコマンドに出会ったことがありますか?オプション(1)または(2)を使用してINSERT | UPDATE操作を実行すると、過度に複雑でエラーが発生しやすくなります。 目的 目的のレコード(この場合、employee_id 1)が最新であり、本質的に同じクエリを2回記述する必要がないことを確認します。 環境 テーブル名:従業員 従業員ID:主キーがあり、IDプロパティがtrueに設定されています オプション SQL UPDATEを実行... @@ rowcount = 0および@@ error = 0をチェック...必要に応じてSQL INSERTを実行 con:同じクエリを、挿入として1回、更新として1回、事実上2回記述する必要があります con:より多くのコード=より多くの時間入力 con:より多くのコード=より多くのエラーの余地 /programming/1106717/how-to-implement-a-conditional-upsert-stored-procedure「@@ rowcountを使用して更新」 SQL MERGEを実行します con:同じクエリを、挿入として1回、更新として1回、事実上2回記述する必要があります con:より多くのコード=より多くの時間入力 con:より多くのコード=より多くのエラーの余地 http://technet.microsoft.com/en-us/library/bb510625.aspx「T-SQLマージ」 SQL UPSERTを実行します(機能は存在しません) pro:データとテーブルの関係を一度定義します(SQL ServerがINSERTかUPDATEかどうかを心配させます) pro:コードの削減=実装の高速化 pro:少ないコード=低い確率 UPSERTの例 UPSERT employeee(employee_id、employee_number、job_title、first_name、middle_name、surname、modified_at)VALUES(1、'00 -124AB37 '、' Manager '、' John '、' T …

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

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.無関係なデータベースにアクセスしようとする理由がわかりません...) ここからどこに行くべきか本当にわかりません。繰り返しますが、基本的に必要なのは、サードパーティにデータベースに接続してこのビューから選択させるために、サードパーティに提供できるユーザーを作成することです。

5
SQL Agentジョブを視覚化するための優れたツールは何ですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、データベース管理者のStack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 エージェントジョブを管理するための組み込みのMS SQL Studioツールは、少しイライラするものです。役に立つツールはありますか? ちなみに、このようなツールで見たいものが3つあります。 どのジョブがいつ、どのくらいの期間実行され、成功したかどうかのグラフィカルな要約。 ジョブアクティビティモニターのような現在のステータスビュー。ただし、ほぼリアルタイムで更新されます。 ジョブを複製または変更するためのより便利なインターフェイス(たとえば、モーダルダイアログによってブロックされることなく2つのジョブステップを比較する)。 これを処理するための小さなアプリを書くのはおそらく簡単でしょうが、誰かがすでにそれをすでに行っており、それをより良くしているでしょう。 これは明らかに主観的な質問なので、ある種のmodが過去をさまよう場合は、気軽にCWにしてください。

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 …

5
複数のデータベースを使用する場合と単一のデータベースを使用する場合の長所/短所
私は、7つのデータベースを使用する必要がある新しいプロジェクトに取り組んでおり、パフォーマンス、安定性、最適化をより簡単に実装できると主張していました。 私は同意しませんが、単一のデータベースを使用する(テーブルを論理ドメインに分割する)ための適切な引数を収集するのに問題があります。 これまでの議論の1つは、データの整合性です(データベース間で外部キーを使用することはできません)。 単一または複数のデータベースを使用する場合の長所と短所は何ですか? [これまでの概要] 複数のデータベースに対する引数: データの整合性が失われます(データベースで外部キーを使用できません) 復元の整合性を失う 複雑化(dbユーザー/ロール) 小さなオッズのサーバー/データベースがダウンします ソリューション: スキーマを使用してドメインを分離します。 POC:ダミーデータを使用して7/1 dbの実行計画のポイントを証明する

2
主キーを追加する前に、または後にページレベルの圧縮を追加する必要がありますか?
状況 SQL Server 2008 Enterpriseのデータウェアハウス 3,600万行以上のヒープ(問いません)、60列以上 毎月75万件追加 主キーが定義されていません(現在識別されています) 圧縮なし 私が考えていること(この順序で) ページレベルの圧縮を追加する PKを追加します 多数の非クラスター化インデックスを追加する できるだけ早くこれを行う 質問 最終的には、最初にPKまたはページ圧縮を追加しますか?(重要ですか?) 最初に圧縮をテーブルに追加すると、インデックスはテーブルレベルの圧縮設定を継承しますか?この特定の質問に対する答えは、「いいえ、圧縮は継承されません」です。dba.stackexchangeにあります。 私が今傾いていること -- Add page level compression alter table dbo.TableName rebuild with (data_compression = page) ; go -- Add primary key alter table dbo.TableName add constraint PK_TableName primary key clustered (<Columns>) ; go -- …

1
アップグレード後のSQL呼び出しの処理中のSET NOCOUNTエラー
新しいサーバーと更新されたバージョンのMicrosoft SQL Serverを使用してテスト環境をアップグレードしていますが、問題が発生しています。 新しいサーバーでは、一部のストアドプロシージャを実行すると、古いコードに「オブジェクトが閉じられているときは操作が許可されません」が表示されます。このメッセージは古いサーバーには表示されませんでした。追跡するSET NOCOUNT ON;と、ストアドプロシージャに追加することで問題を解決できます。 データベースのデフォルトを調べましたが、デフォルトに関連する異なる設定(SQL Server 2008とSQL Server 2014)はありませんでした。 SET NOCOUNT ON1000のストアドプロシージャに追加する必要なく、これをグローバルに解決するには、どの設定を検討する必要がありますか?

4
XACT_ABORTがONに設定されている場合、どのような場合にCATCHブロック内からトランザクションをコミットできますか?
とについてMSDNを読んTRY...CATCHでいXACT_STATEます。 構造XACT_STATEのCATCHブロックで使用してTRY…CATCHトランザクションをコミットするかロールバックするかを決定する次の例があります。 USE AdventureWorks2012; GO -- SET XACT_ABORT ON will render the transaction uncommittable -- when the constraint violation occurs. SET XACT_ABORT ON; BEGIN TRY BEGIN TRANSACTION; -- A FOREIGN KEY constraint exists on this table. This -- statement will generate a constraint violation error. DELETE FROM Production.Product WHERE ProductID …

3
ユーザー定義のテーブルタイプを作成し、同じトランザクションで使用できますか?
次を実行すると(管理スタジオで、GOはコマンドをバッチに分割します) use tempdb begin tran go CREATE TYPE dbo.IntIntSet AS TABLE( Value0 Int NOT NULL, Value1 Int NOT NULL ) go declare @myPK dbo.IntIntSet; go rollback デッドロックエラーメッセージが表示されます。私のプロセスはそれ自体でデッドロックしました。この動作は2008年、2008R2、2012年に見ました。 作成された同じトランザクション内で新しく作成されたタイプを使用する方法はありますか?

3
SQL Serverクエリがメモリで実行されているかディスクに移動しているかを判断する方法はありますか?
今日、アプリケーションで一連のストアドプロシージャに出くわしました。これらは、長時間実行されるプロセス内で繰り返し呼び出されます。各プロシージャ内で、複数の異なるselectステートメントを見つけました。一部はループ内です。当然のことながら、現在使用されているこれらのルーチンの実行には数分かかりますが、直観では数秒で完了すると予想されます。 これらの手順が書かれたとき、パフォーマンスが考慮されなかったことはかなり明白であるように見えます。「良いアイデアではない」もののインスタンスが複数あります。 データのインポート時の各行の処理には1行あたり300ミリ秒かかるため、比較的小さなインポートの処理には数分かかります。 ただし、手順に含まれるテーブルの大部分は非常に小さいものです。これらのテーブルのすべてがメモリに完全に常駐している場合、おそらくこのいずれかを書き換えても得られるものはそれほど多くないと考えています。 私は決定しようとしている....この明らかに非効率的なコードのために、それはどれほどの本当の影響を与えているのか?修正する価値はありますか? 質問は次のとおり です。-完全にメモリに固定されているテーブルを特定する方法はありますか? -ネストされたストアドプロシージャを監視して特に高価な部分を見つけるために、トレースをオンにする方法はありますか? 注:これはSQL Server 2008 R2にあります

1
SQL Server 2008は実行計画の作成日を保存しますか?
最近、使用するアプリケーションをアップグレードしました。これには、データベースのスキーマの変更が含まれていました。これらの変更により、キャッシュされた実行計画が強制的に破棄される可能性がありました。SQL Serverが多数の新しいプランを作成することを余儀なくされた場合、これによりユーザーエクスペリエンスが低下する可能性がありました。これが事実かどうかを知りたい。 それで、私の質問は、SQL Server 2008はキャッシュされた実行プランの作成日を保存するのですか?管理ビューにsys.dm_exec_cached_plansは日付フィールドがないため、そうではないと思われます。

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