2

こんにちは、私はしばらくこの問題に取り組んできましたが、通常の Google 検索では役に立ちません :(

SQL 2000 の実稼働データベースがあります。それをトレーニング データベースの上にコピーして更新したいと考えています。トレーニング データベースを最新の状態に保つために、これを 1 週間に 1 回行うようにスケジュールしたいと考えています。

これを行うために作成された DTS ジョブがあります。その DTS ジョブ内に、"SQL Server オブジェクトのコピー" タスクが 1 つあります。そのタスクは次のように設定されています。

  • コピーされたすべてのオブジェクトを作成する
    • 最初に宛先オブジェクトをドロップします
  • データのコピー
    • 既存のデータを置き換える
  • インデックス、トリガー、主キー、外部キーをコピーする
  • すべてのユーザー テーブル、ビュー、関数、およびストアド プロシージャをコピーします。

この DTS パッケージを実行すると (もちろんテスト用の運用前段階で)、99% 完了し、次のエラーがスローされます。

Step Error Source: Microsoft SQL-DMO (ODBC SQLState: 42S02)
Step Error Description:[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'dbo.vwEstAssetStationAddress'.
Step Error code: 800400D0
Step Error Help File:SQLDMO80.hlp
Step Error Help Context ID:1131

ネットで検索してもあまり役に立ちませんでした。これらのエラーがヒットしたという報告がありますが、私の状況に一致するものはないようです。私が見つけた 1 つの提案は、sysdepends テーブルが破損し、DTS ジョブがスクリプトを間違った順序で実行するようになったというものでした。ただし、次のスクリプトを実行してそのテーブルを修正しましたが、それでも同じエラーがスローされます。

USE master
GO
ALTER DATABASE [DATABASE NAME]
SET SINGLE_USER
GO

USE [DATABASE NAME]
GO

DBCC CHECKTABLE('sysdepends',REPAIR_REBUILD )
GO

USE master
GO
ALTER DATABASE [DATABASE NAME]
SET MULTI_USER
GO

また、オブジェクトの所有者が異なると、このエラーが発生する可能性があることも確認しました。しかし、この場合、オブジェクトはすべて dbo ユーザーによって所有されていることを確認しました。

助言がありますか?

4

6 に答える 6

2

私はばかげているように感じますが、後世のために見つけた答えを投稿しています(そして、あなたの親切な仲間は私に代わって強調するのをやめることができます.

コピーするすべてのユーザー テーブル、ビュー、ストアド プロシージャ、およびユーザー定義関数を選択しましたが、[すべての依存オブジェクトを含める] を選択していませんでした。コピーするオブジェクトを 2 つ選択し、一方が他方に依存している場合、SQL は常に正しい順序でそれらを実行すると想定していました。どうやらそうではありません。この小さなチェックボックスを選択することで、すべてが変わりました。

提案を手伝ってくれた人々に再び感謝します

于 2008-10-15T04:10:09.770 に答える
0

まだ存在していないビューに基づいてストアドプロシージャ/ビューを作成しようとしているようです。

データベースを別の名前でバックアップおよび復元しないのはなぜですか?(本番環境でない場合は、デタッチ、コピー、および再アタッチと言います)。これらはすべて、T-SQLの制御下で実行できます。

このリンクが依存関係の問題を見つけるのに役立つかどうかを確認してください。

于 2008-10-15T02:41:07.143 に答える
0

どういうわけか、dbo.vwEstAssetStationAddress テーブルが DTS パッケージによって検出されません。残念ながら、メッセージは、ソースまたは宛先のどちらにあるのか、それが見つからなかったことを示していません。

DTS パッケージに含まれている順序で、正確な手順は何ですか? 上記のタスク アイテムのリストが適切でないことを前提としています。これが答えではないことはわかっていますが、さらに支援するにはもう少し情報が必要なようです.

于 2008-10-15T01:58:52.530 に答える
0

hectorsosajr さん、返信ありがとうございます。

明らかにエラーを引き起こしているオブジェクト (dbo.vwEstAssetStationAddress) は、2 つの基になるテーブルを参照するビューです。ソース データベースと宛先データベースの両方で、ビューのクエリとそれを定義する SELECT ステートメントの実行をテストしましたが、正常に動作しました。

DTS のデータベース オブジェクト コピー タスクでは、転送順序を指定することはできません。私が理解している限りでは、sysdepends テーブルを使用してイベントの必要な順序を決定します。

于 2008-10-15T02:12:57.980 に答える
0

バックアップ/復元を介してそれを回避しようとしていました。SQL Server アカウント (Active Directory ではない) であるデータベースのユーザーがいます。これは面倒ですが、あるサーバーから別のサーバーに移動する必要がある場合は、それらのユーザーを削除して再作成する必要があります。

于 2008-10-15T02:52:07.137 に答える
0

これを分離するために別のテストを実行しました。上記のビューを宛先データベースから完全に削除してから、DTS を再度実行しました。同じエラーで失敗しました。ただし、明らかに無効なオブジェクト名であるビューは正常に再作成されました。そのビューを参照しようとしている何かからエラーが発生しているようですが、そのエラーが発生しても実際にはスクリプトを停止しません。

Cade - そのリンクを確認します。また、ビューを参照して壊れているものを確立しようとします。

于 2008-10-15T03:47:00.863 に答える