【问题标题】:Issue with .mdf and installshield.mdf 和 installshield 的问题
【发布时间】:2015-09-22 05:20:10
【问题描述】:
我有一个使用 SQL Server 2014 localdb 连接到 .mdf 的程序。它需要安装到程序文件,所以它不能使用单击一次。话虽如此,当我点击一次构建它时。它完美地工作np。
但是当我通过 install shield 安装它时,我得到了这个异常
基础提供程序在打开时失败。 ---> System.Data.SqlClient.SqlException:尝试为文件 C:\Program Files (x86)\King Canine\King Canine Software\CanineDatabase.mdf 附加自动命名数据库失败。存在同名数据库,或指定文件无法打开,或位于 UNC 共享上。
我选择了 SQL Server 2014 LocalDB 作为重新分发的一部分,它安装在我正在测试它的计算机上。
以前有没有人遇到过这个问题或有任何想法?
【问题讨论】:
标签:
c#
winforms
installshield
sql-server-2014
localdb
【解决方案1】:
根据您发布的错误消息,它可能意味着以下任何一种:
存在同名数据库
这意味着您尝试附加的数据库已经存在于数据库中。
指定的文件无法打开,或者它位于 UNC 共享中
您可以尝试检查您尝试附加的 .mdf 文件的文件夹是否具有足够的文件夹访问权限,您可以在文件夹的属性中的安全部分中看到这一点。
【解决方案2】:
-
像这样更改连接字符串:
string connectionStr = @"Data Source=(LocalDB)\MSSQLLocalDB; Database=CanineDatabase.mdf;Integrated Security = True";
-
对服务器中的数据库进行 T-SQL 查询:
USE [master]
GO
IF NOT EXISTS(SELECT * FROM sys.databases WHERE name = 'CanineDatabase.mdf')
BEGIN
EXEC sp_attach_db @dbname = N'CanineDatabase.mdf',
@filename1 = 'C:\Program Files (x86)\King Canine\King Canine Software\CanineDatabase.mdf',
@filename2 = 'C:\Program Files (x86)\King Canine\King Canine Software\CanineDatabase_log.ldf';
END
GO