1

実稼働環境と開発環境のサーバーがあります。1 か月に 1 回、データベースを本番環境からダンプして、開発環境にロードしたいと考えています。

しかし、いくつかのユーザーとログインの問題もあります (ログインの欠落、パーミッションなど)。

ダンプ後にユーザーとログインを同期する最良の方法は何ですか?

4

2 に答える 2

1

sysloginsテーブルをprodmasterからbcpして、そのテーブルをdevmasterにbcpすることができます。これは、最初は慎重に行う必要があります。開発システムからすべてのユーザーログイン(システムのデフォルト以外のログイン)を削除することをお勧めします。

マスターにbcpするには、次のフラグを設定して、システムテーブルの更新を許可する必要があります。

sp_configure 'allow updates', 1

次に、ブロックサイズ1を使用してデータを開発システムにbcpします。これにより、重複していない行に影響を与えることなく、重複している行をスローできます。

bcp master..syslogins in prodsyslogins.file -Usa -Psa_password -Smyserver -n{-c} -b1

bcpが完了したら、システムテーブル更新フラグの設定を解除する必要があります。

sp_configure 'allow updates',0

正しく実行された場合、すべてのsyslogin suidは、各データベースのsysusers suidと一致するはずです。これにより、発生した権限の問題が解決されます。

演習注意 マスターをいじり始める前に、マスターのバックアップがあることを確認してください。

于 2013-03-08T13:24:00.870 に答える
1

ロードを開始する前に、sysusers、sysalternates、および sysprotects を bcp で出力できます。データベースがオンラインになったら、「更新を許可」を有効にし、sysusers、sysalternates、sysprotects を削除し、bcp を入力します。

suid の不一致があるかどうかを確認することもできます。

sysusers t1、master..syslogins t2 から t1.suid、t2.suid を選択します。t1.name = t2.name および t1.suid != t2.suid および t1.suid != -2

于 2013-03-09T16:12:04.760 に答える