SQL Server 2008 R2 on Server 2012 R2 网站连接问题

SQL Server 2008 R2 on Server 2012 R2 web site connection issue

我一直在许多数据库和 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 服务器并打开或访问数据库表。此 DB 包含其所绑定网站的 ASP 成员资格。

这是错误:

CREATE DATABASE permission denied in database 'master'. An attempt to attach an auto-named database for file C:\inetpub\techTran\App_Data\myDB.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: CREATE DATABASE permission denied in database 'master'.

我以为我明白这个错误是什么了。我检查了权限,它们与部署了该数据库的其他服务器相匹配。我的 SQL 服务器安装基本上都是一样的。这里唯一的区别是这是 Windows 虚拟机上的 Server 2012 R2。或者我没有像过去设置的 5 个服务器那样安装 SQL Server 2008 R2。 (我猜可能是这种情况。)

更新:卸载并重新安装 SQL 服务器和 SSMS。

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

我相信与

有关的特定错误消息

CREATE DATABASE permission denied in database 'master'

是问题。

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

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

主页加载,然后登录抛出上述错误。

您的连接字符串显示 AttachDbFilename=|DataDirectory|\myDB.mdf。那么,您的路径必须在一个地方(SQL 服务器)而不是另一个地方(应用程序配置)发生了变化。 AttachDbFilename will try to 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 服务器的行为方式方面,但您可以互换使用它们。这让人很难分辨发生了什么。此外,您的连接字符串显示 Data Source=.\SQLEXPRESS。这是 SQL Server Express 吗?因为这与 SQL 服务器的大多数其他版本也有重要区别。最近的版本与标准版非常相似,但版本越旧,它的怪癖就越多。他们通常被认为是不同的野兽。

已解决:我不确定这是怎么发生的,或者为什么没有发生。但出于某种原因,SQL 的安装没有将 NETWORK SERVICE 帐户添加到 sysadmin 服务器角色。我将此与 SERVER 2003 安装交叉引用,其中 SQL 2008 R2 也是 运行,并发现系统管理员 SQL 服务器角色在我正常运行的环境中包含 NETWORK SERVICE。因此,一旦我将用户帐户添加到该角色,一切就都正常了。

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