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

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

2
SQLの2つの大きなデータセットを比較する効率的な方法
現在、一意のStoreKey/ProductKey組み合わせを含む2つのデータセットを比較しています。 1番目のデータセットには、StoreKey/ProductKey2012年1月から2014年5月の終わりまでの販売の一意の組み合わせがあります(結果= 45万行)。2番目のデータセットには、StoreKey/ProductKey2014年6月から今日までの販売の一意の組み合わせがあります(結果= 19万行)。 私はStoreKey/ProductKey、2番目のセットにはあるが、1番目のセットにはない組み合わせ、つまり6月初旬から販売された新製品を探しています。 これまで、2つのデータセットを一時テーブルにダンプし、両方のキーで両方のテーブルのインデックスを作成し、EXCEPTステートメントを使用して一意のアイテムを見つけました。 このような大きなデータセットを比較する最も効率的な方法は何ですか?このタイプの大規模な比較を行うより効率的な方法はありますか?

4
パスワードを使用してログインを2008R2から2014に転送するにはどうすればよいですか?
Advanced Scripting Optionsで「Tasks> Generate Scripts...スクリプトログイン」を設定してみましたが、出力で次のようになります。 /* For security reasons the login is created disabled and with a random password. */ これらのログインをパスワードでスクリプト化する簡単な方法や、ログインを2008R2インスタンスから2014インスタンスに転送する別の方法はありますか?

11
2つのSQLテーブル間のコンテンツの違いを見つけて、同期SQLを生成する方法
正確なスキーマを持つ2つのテーブル間のデータの違いを見つける方法と、ユニオンの結果(重複なし)を取得するための同期SQLの生成方法 これらは2つのテーブルです。 SOURCE01.dbo.Customers (31,022 rows) TARGET01.dbo.Customers (29,300 rows) 各テーブルのスキーマは次のとおりです。 [CustomerId] : nvarchar(255) [CustomerSerializedProfile]: nvarchar(max) [CreatedDatetime] : DateTime

1
SQL Server 2008 R2インデックスの再構築が重大度17で失敗する
インデックスのメンテナンス中に、SEV 17エラーでジョブが失敗し、再構築中のオブジェクトに十分なスペースを割り当てられないことがあります。データベースは次のようにレイアウトされます。 Data_file1 PRIMARY 0 growth 0% free Max Size UNLIMITED Data_file2 PRIMARY 0 growth 0% free Max Size UNLIMITED Data_file3 PRIMARY 0 growth Less than 1% free Max Size UNLIMITED Data_file4 PRIMARY 250 MB growth Less than 1% free Max Size UNLIMITED 基本的に、4つのデータファイルのうち3つがいっぱいで成長が許可されず、4つ目がいっぱいで成長が許可されています。ファイルはさまざまなLUNに分散しています(そして、その理由は面倒です)。そのため、オンラインインデックスの再構築が開始されると、追加のスペースが必要な場合、Data_file4に成長して問題ないことを理解していますが、成長が許可されておらず失敗する別のファイルに成長しようとしているようです。このエラーを再現することはできませんが、なぜこれが発生するのかについての洞察を誰かが持っているかどうか疑問に思っていました。 SQL Serverの完全バージョンは2008 R2 Enterprise、SP2 CU 4(10.50.4270)です。Ola …

1
これらのDMVの結果をどのように解釈して、パーティション戦略を評価するのに役立ちますか?
バージョン:SQL Server 2008 R2 Enterprise Edtn。(10.50.4000) パーティション戦略を評価するために、このクエリを作成して、パーティションのインデックスに対するアクセス方法を取得しました(用語の最も広い意味では、ヒープを削除しています)。私は、パーティション表への私の焦点を絞るように、私は私が見てする必要があると考えているrange_scan_countとsingleton_lookup_countしたが、ハードディスクの時間概念化が生じています。 SELECT t.name AS table_name, i.name AS index_name, ios.partition_number, leaf_insert_count, leaf_delete_count, leaf_update_count, leaf_ghost_count, range_scan_count, singleton_lookup_count, page_latch_wait_count , page_latch_wait_in_ms, row_lock_count , page_lock_count, row_lock_wait_in_ms , page_lock_wait_in_ms, page_io_latch_wait_count , page_io_latch_wait_in_ms FROM sys.dm_db_partition_stats ps JOIN sys.tables t ON ps.object_id = t.object_id JOIN sys.schemas s ON t.schema_id = s.schema_id …

1
SQL-Server-データベースのユーザーDBOパーミッションを付与
実稼働データベースのバックアップから毎晩復元するレポートデータベースがあります。復元するときにDBO、そのデータベースのロールにユーザーを追加する必要があります。 私はこれがうまくいくと思った: use Restored_Prod go exec sp_addrolemember 'db_owner', 'chris' go しかし、そのユーザーはRestored_Prodデータベースに存在しないため、次のエラーが表示されます。 Msg 15410, Level 11, State 1, Procedure sp_addrolemember, Line 75 User or role 'chris' does not exist in this database. どのようにして実行できるようにするデータベースにユーザクリス」を追加しないsp_addrolemember彼を作るためにDBO、そのデータベースのか?sp_addrolememberユーザーが存在するマスターDBからのコマンドを使用してユーザー権限を追加する方法はありますか?

1
トランザクションが「コミット」されている場合、確実に保存されますか?
トランザクションが正常にコミットされた場合、データベースとログファイルに書き込まれたことを100%確認できますか?データが保存されていることを確認できますか? 今日、ログファイルはドライブの制限に達し、多くのエラーが発生しました。さらに、他のいくつかのサービスがクラッシュしました。ディスクを増やし、サーバーを再起動しました。 起動時に、サーバーは「データベースの回復」を行いました。すべてが再び正常に動作することを確認できますか?

1
マージレプリケーションの誤った競合を適切にトラブルシューティングする方法
SQL Server 2008 R2マージレプリケーションのセットアップがあります。 最近、いくつかのテーブルで競合が発生し始めました。競合ビューアを確認すると、勝者と敗者の列の値が同じであることがわかります。 これらのデータは1人の加入者だけが入力していると確信しています。 使った sp_showrowreplicainfoは競合する行の詳細を取得していましたが、2つの行がありました。1つはパブリッシャー用、もう1つはサブスクライバー用で、両方の行の「バージョン」が1です。 また、ブランドンの方法を実装しました:Merge Replicationで変更を監査しますが、通常の挿入のみを示していました! この種の競合のトラブルシューティングを開始する方法を教えてください。

4
2つのテーブルを相互に検証する簡単な方法
ETLプロセスを行っています。すべてを言い終えると、同一のテーブルがたくさんあります。(2つの異なるサーバー上の)それらのテーブルが実際に同一であることを確認する最も簡単な方法は何ですか。私はスキーマとデータの両方を話しています。 個々のファイルまたはファイルグループでできるように、テーブルでハッシュを実行できますか?Red-Gateのデータ比較がありますが、問題のテーブルにはそれぞれ数百万の行が含まれているため、もう少しパフォーマンスの高いものが欲しいです。 私の興味を引く1つのアプローチは、組合声明のこの創造的な使用です。しかし、可能であれば、ハッシュのアイデアをもう少し詳しく調べたいと思います。 回答の更新後 将来の訪問者のために...ここに私が取った正確なアプローチがあります。これは非常にうまく機能し、各データベースのすべてのテーブルで実行しています。私を正しい方向に向けてくれた以下の回答に感謝します。 CREATE PROCEDURE [dbo].[usp_DatabaseValidation] @TableName varchar(50) AS BEGIN SET NOCOUNT ON; -- parameter = if no table name was passed do them all, otherwise just check the one -- create a temp table that lists all tables in target database CREATE TABLE #ChkSumTargetTables ([fullname] varchar(250), [name] …

2
このクエリで非クラスター化インデックスが使用されないのはなぜですか?
クエリパフォーマンスの向上に関するこの質問に続き、デフォルトでインデックスを使用する方法があるかどうかを知りたいと思います。 このクエリは約2.5秒で実行されます。 SELECT TOP 1000 * FROM [CIA_WIZ].[dbo].[Heartbeats] WHERE [DateEntered] BETWEEN '2011-08-30' and '2011-08-31'; これは約33msで実行されます。 SELECT TOP 1000 * FROM [CIA_WIZ].[dbo].[Heartbeats] WHERE [DateEntered] BETWEEN '2011-08-30' and '2011-08-31' ORDER BY [DateEntered], [DeviceID]; [ID]フィールド(pk)にクラスター化インデックスがあり、[DateEntered]、[DeviceID]に非クラスター化インデックスがあります。最初のクエリはクラスター化インデックスを使用し、2番目のクエリは非クラスター化インデックスを使用します。私の質問は2つの部分です。 なぜ、両方のクエリに[DateEntered]フィールドにWHERE句があるため、サーバーは2番目ではなく最初のクラスター化インデックスを使用するのですか? orderbyがなくても、このクエリでデフォルトで非クラスタ化インデックスを使用するにはどうすればよいですか?(または、なぜそのような振る舞いを望まないのでしょうか?)


3
SQL Server 2008 R2「ゴーストメモリ」?
奇妙なメモリの問題が発生している専用のSQL Server 2008 R2マシンがあります。マシン自体には、2つのクアッドコアプロセッサ、16 GBのRAM、64ビットWindows Server 2008 R2 Enterprise(Dell PowerEdge 2950)を含む十分なリソースがあります。 。 奇妙な問題は、システムが使用中のメモリの82%を報告しているが、sqlservr.exeが使用中の155MBのみを報告していることです。SQL Serverが問題であると思われる理由は、sqlservr.exeプロセスを再起動すると、メモリ消費が一定期間正常に戻るためです。 この問題の追跡を開始する方法について、誰にもアイデアがありますか? ありがとう、ジェイソン

3
「データベースは移行中です」エラー
今日、既存のデータベースの上にデータベースを復元しようとしていましたが、SSMSでデータベースを右クリックしただけです->タスク->オフラインにして、データベースを復元できるようにしました。 小さなポップアップウィンドウが表示されQuery Executing.....、しばらく表示された後、エラーメッセージが表示されましたDatabase is in use cannot take it offline。そこから収集したデータベースへのアクティブな接続がいくつかあるので、次のクエリを実行しようとしました USE master GO ALTER DATABASE My_DatabaseName SET OFFLINE WITH ROLLBACK IMMEDIATE GO この時点でも、SSMSはしばらくの間Query Executing.....表示し、次のエラーをスローしました。 Msg 5061, Level 16, State 1, Line 1 ALTER DATABASE failed because a lock could not be placed on database 'My_DatabaseName'. Try again later. Msg 5069, …

4
実行中のジョブ内からジョブIDまたはジョブ名を取得する
すべてのサーバーでジョブの結果を書き戻す中央DBがあります。SQLジョブでpowershellを介して3つのパラメーターを中央サーバーのspに戻し、ジョブがその時点で実行されていることを確認します。次に、情報がSSRSを介して公開されるため、ジョブの失敗/長時間実行されているジョブ/ &まだ実行されていないはずのジョブ(または誰かがスケジュールをめちゃくちゃにした場合)。 これを行うには、すべてのサーバーの各ジョブに2つのジョブステップを追加します。スクリプトを各ジョブに1ステップだけ追加して、ネットワーク共有から呼び出すこともできます。 しかし、私の問題は、渡す3つのパラメーターの1つです。実行中のジョブ内から実行中のジョブIDまたはジョブ名を取得する必要があるので、nameパラメーターをハードコーディングする必要はありません。私が渡す3つのパラメーターは、jobid、status(success / fail)、errormsgです。私が書いたPowerShellスクリプトは非常に単純です。 Invoke-sqlcmd -ServerInstance "MYRemoteSYSTEM" -Database remoteDB -Query "exec dbo.JOB_LOG 'JOBNAME / ID'、 'Success / FAIL'、 'BAD MESSAGE HERE'" これにより、必要なものがテーブルに書き込まれます。msdb.dbo.sp_help_job / msdb.dbo.sp_get_composite_job_info / dbo.xp_sqlagent_enum_jobs /を見てきましたが、実行中のジョブが複数ある場合に、正しい実行ジョブのIDまたは名前を取得できることは保証されません同時に。 私もsys.sysprocessesを調べてみましたが、エージェントジョブはpowershellスクリプトなので、「。Net SqlClient Data Provider」と表示されるので、「SQLAgent-」と表示されるジョブからバイナリJOBIDをトリミングできません。 TSQL JobStep(Job 0xF1800243164745429C30474FFD5C990C:Step 1) "---これはデニーチェリーの投稿から学んだ-感謝デニー - 実行中のジョブIDを取得する方法についてのアイデアは、大歓迎です。 おかげで、 クリス

4
RESTORE HEADERONLYからフィールドを抽出する
「RESTORE HEADERONLY」を使用して、復元しようとしているバックアップが作成された日付を取得しようとしています。 コマンド: RESTORE HEADERONLY FROM DISK = '<path to .bak file>' クエリアナライザーで正常に動作し、50列などの結果セットを提供します。 問題は、実際にコードからこれにアクセスすることです。 これを一時テーブルに入れるには、50:ish列の1つ1つを宣言し、それに挿入してexec、そこから必要な値を取得します。 問題は、将来のバージョンで列を追加する場合、非常に脆弱なソリューションのように思われるので、結果セット全体を一時テーブルとして宣言する必要がないようにしたいということです。 すべての列を宣言せずに、この結果セットから単一の列を取得する方法はありますか?

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