Server 2012 R2上的SQL Server 2008 R2网站连接问题

时间:2015-04-08 16:28:35

标签: sql-server-2008-r2 windows-server-2012-r2

我一直在使用这个连接字符串,在许多数据库和MS操作系统上都没有问题。 Windows Server 2003,2008 R2和2012 R2 Eval,所有Express版本。

我现在正在尝试部署到新的Windows Server 2012 R2安装,但是我遇到了一些错误。我在Windows Server 2012 R2计算机上安装了SQL Server 2008 R2。

我的骗局:

connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\myDB.mdf;Integrated Security=True;User Instance=False" ProviderName="System.Data.SqlClient"

我认为这必须与新服务器上组件的安装顺序有关。

我过去只能简单地将myDB.mdf复制到任何Web服务器并打开或访问数据库表。此数据库包含与其绑定的网站的ASP成员资格。

这是错误:

  

在数据库' master'中拒绝CREATE DATABASE权限。试图   附加文件的自动命名数据库   C:\ inetpub \ techTran \ App_Data \ myDB.mdf失败。一个数据库   存在相同的名称,或者指定的文件无法打开,或者是   位于UNC分享。
  描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

     

异常详细信息:System.Data.SqlClient.SqlException:CREATE   DATABASE权限在数据库' master'。

中被拒绝

我以为我理解这个错误是什么。我已检查权限,并且它们与已部署此数据库的其他服务器匹配。我的SQL Server安装基本上都是一样的。这里唯一的区别是这是VM上的Windows Server 2012 R2。或者我没有像我在过去设置的5台服务器中那样安装SQL Server 2008 R2。 (我猜可能就是这种情况。)

更新:卸载并重新安装SQL Server和SSMS。

我知道服务器上只有一个名为myDB.mdf的数据库名称,所以我不相信"同名"错误的一部分。我已经为数据库添加了安全性,以便可以打开它,我甚至在服务器上安装了Visual Studio 2012,以确保可以打开数据库。我可以在localhost(服务器2012)上运行完整的应用程序,但我无法通过Web连接访问它。

我相信与

相关的具体错误消息
  

在数据库' master'

中拒绝CREATE DATABASE权限

是问题。

我之前从未见过这个错误。

我通常会将NETWORK SERVICE帐户分配给数据库以允许访问,这也是这个帐户的设置方式。我还认为这可能是一个连接字符串问题。但是这个相同的字符串现在已经在4个不同的服Server 2003,2008 R2和2012(演示平台)(所有Express版本),现在正在生产中,这是失败的。

加载主页然后登录会引发上述错误。

2 个答案:

答案 0 :(得分:2)

您的连接字符串显示AttachDbFilename=|DataDirectory|\myDB.mdf。好吧,您的路径必须在一个地方(SQL Server)而不是另一个地方(应用程序配置)更改。 AttachDbFilename会尝试create a new DB if it can't find that file。这可能是你的错误。

另外,Windows Server 2003,Windows Server 2003 R2,Windows Server 2008,Windows Server 2008 R2,Windows Server 2012和Windows Server 2012 R2都存在差异,特别是在安全性方面,尤其是SQL Server的行为方式,但你可以互换使用它们。这让人很难分辨到发生了什么。此外,您的连接字符串显示为Data Source=.\SQLEXPRESS。这是SQL Server Express吗?因为这与SQL Server的大多数其他版本也有重要区别。最近的版本与标准版非常相似,但版本越旧,它就越有怪癖。他们通常被认为是不同的野兽。

答案 1 :(得分:1)

解决:我不确定这是怎么发生的,也可能是为什么它没有发生。但由于某种原因,SQL的安装没有将NETWORK SERVICE帐户添加到sysadmin服务器角色。我在运行SQL 2008 R2的SERVER 2003安装中交叉引用了这一点,并发现sysadmin SQL Server角色在我正常运行的环境中包含了NETWORK SERVICE。所以,一旦我将用户帐户添加到此角色,一切都很顺利。

我认为这可能是安装SQL 2008 R2时的一个问题。我确实指定了NETWORK SERVICE,但由于某种原因没有提供角色。