43

VS 2012 で SQL Server データベース プロジェクトを作成し、データベースをインポートしました。プロジェクトをビルドすると、多くの「オブジェクトへの未解決の参照」エラーが発生します。これらのエラーは、データベースにあるいくつかのビューのみに発生します。これらのビューの構文は正しく、一時テーブルは使用していません。この問題を解決するには、何を確認すればよいですか?

更新: これは一例です:

    CREATE view [Factory].[NonStartedOrders]
as
 SELECT 

"Customers"."CustomerName", "Customers"."CustomerAName",
"Customers"."MarketID",
"Orders"."OrderID", 
"Orders"."ApproveDate", 
"FactoryOrders"."FactoryID", 
"FactoryOrders"."EstEndDate", 
"FactoryOrders"."StatusID", 
"FactoryOrders"."TotalWeight", 
"Karats"."KaratEName"

FROM   (("Taiba"."Sales"."FactoryOrders" "FactoryOrders" 
INNER JOIN "Taiba"."Sales"."Orders" "Orders" ON "FactoryOrders"."OrderID"="Orders"."OrderID") 
INNER JOIN "Taiba"."General"."Customers" "Customers" ON "Orders"."CustomerID"="Customers"."CustomerID") 
INNER JOIN "Taiba"."MasterPiece"."Karats" "Karats" ON "Orders"."MKaratID"="Karats"."KaratID"

「台場」は私のデータベース名です。このビューだけで 30 個のエラーが発生します。これらはそれらのいくつかのエラーです:

Error   217 SQL71561: View: [Factory].[NonStartedOrders] has an unresolved reference to object [Taiba].[Sales].[FactoryOrders]

Error   219 SQL71561: View: [Factory].[NonStartedOrders] contains an unresolved reference to an object. Either the object does not exist or the reference is ambiguous because it could refer to any of the following objects: [Taiba].[Sales].[FactoryOrders].[FactoryOrders]::[OrderID], [Taiba].[Sales].[FactoryOrders].[OrderID] or [Taiba].[Sales].[Orders].[FactoryOrders]::[OrderID].
4

9 に答える 9

27

この問題を解決しました。

私のビュー/SPのいくつかは、この命名規則(3つの部分で修飾された名前)を使用してテーブルを参照しているようです:

データベース名.スキーマ名.テーブル名

すべての参照を次のように変更しました。

スキーマ名.テーブル名

于 2012-12-02T12:14:07.270 に答える
17

私の場合、見つからなかった関数は Build Action= Noneであったため、コンパイルに含まれていませんでした。

ビルドアクションをビルドに変更すると、これが修正されました。

于 2013-10-25T06:05:42.800 に答える
11

これは、Visual Studio 2015 で CTE をビルドしているときに発生しました。ビルド アクションをコンパイルに変更すると、エラーはなくなりました。

  1. エラーのあるファイルを選択してください
  2. F4 キーを押して、プロパティを表示します。
  3. [ビルド アクション] ドロップダウン リストで [コンパイル] を選択します。

これが誰かに役立つことを願っています。

于 2015-10-22T19:26:01.907 に答える
0

クラスを明示的に定義してみてください。

class:アクセス許可が付与されるセキュリティ保護可能なオブジェクトのクラスを指定します。スコープ修飾子 :: が必要です。

GRANTSQLステートメントに関するドキュメントを参照してください: http://technet.microsoft.com/en-us/library/ms187965.aspx

私の場合、ユーザー定義のテーブル タイプがありました。

GRANT EXECUTE ON TYPE::[dbo].[MessageTableType] TO [PostOffice_Role];
于 2014-03-26T01:00:10.260 に答える
0

(.sql ファイルを使用して) テーブルを追加するとき、および .sqlproj ファイルをチェックインしない場合にも、このエラーが発生します。

于 2016-08-24T11:55:53.703 に答える