4

Visual Studio 2010 データベース プロジェクトがあり、既存のスキーマをインポートしました。このデータベースには、Integration Services システム テーブル dbo.sysssislog を参照するストアド プロシージャがあり、プロジェクトで多くの警告を生成しています。

master.dbschema と msdb.dbschema をデータベース参照として追加しようとしましたが、参照のデータベース名を (master または msdb ではなく) tempdb に変更しようとしましたが、問題は解決しません。

msdb.dbschema ファイルを開き、sysssislog テーブルがファイルに存在することを確認しました。

警告は次のとおりです。

SQL04151: Procedure: [dbo].[storedProcedureName] has an unresolved reference to object [dbo].[sysssislog].
4

2 に答える 2

4

これdbo.sysssislogは、SQL Server タイプのイベント ログを含むパッケージを作成するときに、SQL Server Integration Services (SSIS) によって自動的に作成されるユーザー テーブル (システム テーブルとしてマークされます) です。ALTERこのテーブルのほかに、SSISは、ログ プロセスを支援するために、いくつかのストアド プロシージャ (編集可能) も作成します。

プロジェクト内の未解決の参照です。おそらく、データベース スキーマをインポートしたため、前述のストアド プロシージャがインポートされましたが、システム テーブルとしてマークされているため、テーブルはインポートされませんでした。dbo.sysssislog

今、あなたが持っているのは、インポートしていないテーブルを参照する一連のストアド プロシージャであり、警告が発生します。

警告を取り除くためにできることは、手動でテーブルを作成DROPおよび再CREATE作成し (システム テーブル マークを「削除」する唯一の方法です)、それをプロジェクトにインポートすることです。

于 2012-04-13T11:11:15.513 に答える
3

これは、代替のよりクリーンなアプローチです。

新しい空の SSDT プロジェクトを作成し、それを「sysssislog」と呼び、sysssislog テーブルのスクリプトを追加します。プロジェクトをビルドして、dacpac ファイル「sysssislog.dacpac」を生成します。

SSDT プロジェクトで、dacpac ファイルへのデータベース参照を追加し、[データベース参照の追加] ダイアログでデータベースの場所として [同じデータベース] を選択します。

プロジェクトがソース管理下にある場合は、プロジェクトに dacpac を追加してから参照を追加すると、dacpac ファイルもソース管理下に置かれます。

于 2014-04-09T10:13:03.553 に答える