13

I just started working with the Visual Studio 2010 Premium database project. I must say it does indeed rock. One thing I can't figure out is how to avoid the SQL04151 warning

Procedure: [dbo].[MyProc] has an unresolved reference to object [MyDatabase].[dbo].[MyItem].

Did I miss a simple step somewhere? All I can find online involves tempdb.

ire_and_curses
  • 68,372
  • 23
  • 116
  • 141
beezler
  • 646
  • 6
  • 18
  • If [MyDatabase] is the same database where [dbo].[MyProc] is located it might be more advantageous to remove the [MyDatabase]. (or [$(DatabaseName)].) prefixes. If you install multiple instances on the same server for say, testing or development environments, you will not get expected results and may not even realize it, because references may be broken or work when referencing the wrong instance. – JM Hicks Jan 02 '13 at 15:34

4 Answers4

14

I need to substitute [MyDatabase].[dbo].[MyTable] with [$(DatabaseName)].[dbo].[MyTable]. This cleared up the warnings.

Thanks for your help.

beezler
  • 646
  • 6
  • 18
3

In your [dbo].[MyProc] procedure you reference [MyDatabase].[dbo].[MyItem] which is probably not part of your DB project. Even though the object exists in the DB, it is not known to Visual Studio during compilation and thus yields an error.

Normally you should have the entire DB-schema in the DB-project. Otherwise I think there is something called "partial DB projects" that you can look into.

Anders Abel
  • 67,989
  • 17
  • 150
  • 217
  • Actually all objects are part of the DB project. The stored procedure is in MyDatabase. I accepted the defaults when I created the project, but I expect I missed something along the way. – beezler Apr 05 '10 at 13:55
2

MS has acknowledged this as a bug they are working on:

https://connect.microsoft.com/VisualStudio/feedback/details/543657/4151-unresolved-reference-warning-for-tempdb

LeWoody
  • 3,593
  • 4
  • 25
  • 31
0

Check you have set Build Action to Build on Properties pane for the specified object..