【发布时间】:2015-04-08 16:28:34
【问题描述】:
我在许多数据库和 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 数据库“master”中的 DATABASE 权限被拒绝。
我以为我明白这个错误是什么。我已经检查了权限,它们与部署了该数据库的其他服务器相匹配。我的 SQL Server 安装基本上都是一样的。这里唯一的区别是这是虚拟机上的 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 版本),现在在生产中失败了。
首页加载,然后登录抛出上述错误。
【问题讨论】:
-
等等,Server 2003 是从哪里来的?之前你说他们都安装在Windows Server 2008 R2?正如我之前所说,Windows Server 2008 R2 之后有a significant change between how service accounts work。 Server 2003 也有很大不同。
-
如果您的应用程序无法访问它,它是否会尝试创建数据库?您是否真的将数据库从旧系统复制到新系统?你确认server logins and database users are still correctly mapped了吗?
-
所以我在 Server 2003、2008 和现在的 2012 上运行了 SQLSERVER 2008 R2。该数据库位于网站的 app_Data 文件夹中。我在每台服务器上运行了各种版本的 IIS。我已经能够将数据库复制到任何 app_data 文件夹并通过网站登录屏幕访问数据库。 Server 2003 是当前的生产和开发环境 2 系统。在 2008 年测试了迁移,并决定最终迁移到 2012。dev 2012 服务器已启动并完美运行。
-
我不使用任何代码创建主数据库。或与此相关的其他数据库。我只是将 myDB.mdf 复制到每个 app_data 文件夹中。
-
所有用户帐户似乎都已正确映射。
标签: sql-server-2008-r2 windows-server-2012-r2