为什么我的部署脚本会导致错误?

时间:2016-02-10 13:47:47

标签: sql database visual-studio stored-procedures deployment

我正在开发visual studio 2012中的一个项目。最近,我在解决方案中添加了一个数据库项目。在我将其添加到解决方案之前,数据库已经存在,一切正常。 但是,现在,当我尝试运行应用程序时,我收到错误。这些错误是由名为[database name] .sql的计算机生成的文件引起的。在图块的顶部,它显示为:

/*
Deployment script for [the database name here]

This code was generated by a tool.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
*/

每次运行应用程序时都会重新创建此文件。发生的错误似乎是语法错误。我无法修复它们,因为我对文件所做的任何更改都是无关紧要的,因为每次运行都会生成一个新文件并重新出现错误。

我尝试在网上查看此内容但遇到了麻烦。这对我来说都很新鲜。

以下是一些正在创建的错误:

GO
:setvar DatabaseName "(the database name is here)"

这给了我三个错误:

Error   88  SQL80001: Incorrect syntax near ':'.    
Error   89  SQL80001: 'DatabaseName' is not a recognized option.
Error   90  SQL80001: Incorrect syntax near '"(the database name is here in the code)"'.    

此外,还有一行代码为:

CREATE USER [(the domain)\(the username)] FOR LOGIN [(the domain)\(the username)];


GO

会出现以下错误:

Error   119 SQL72014: .Net SqlClient Data Provider: Msg 15401, Level 16, State 1, Line 1 Windows NT user or group '(the domain)\(the username)' not found. Check the name again.    

2 个答案:

答案 0 :(得分:0)

根据您发布的错误,看起来有两个问题:

  1. Windows NT user or group '(the domain)\(the username)' not found. - 用于访问数据库的用户不存在。由于它是Windows用户,我猜它会使用当前用户的凭据。

    确保您的SQL实例可以接受Windows登录,并且您(以及构建该软件的任何其他人)具有必要的访问权限。

  2. 'DatabaseName' is not a recognized option. - 这很可能也是由第一个问题造成的,但请仔细检查数据库是否存在。

答案 1 :(得分:0)

该错误消息最近使我陷入困境,因为它根本与我的问题原因无关。事实证明,我的SQL脚本编写有误(对于我的情况-我忘了在ID PK列中添加IDENTITY(1,1))。

对我而言,故事的寓意是首先在SSMS中测试SQL数据文件。