日期:2014-05-18  浏览次数:20629 次

快疯掉了,sql server 2005数据库连接问题,100分求救
数据库名:C:\DOCUMENTS   AND   SETTINGS\ADMINISTRATOR\桌面\TOOLS\MYCHAT1.0\CHAT\APP_DATA\CHAT.MDF

结果出现这样的错误:
尝试为文件   C:\Documents   and   Settings\Administrator\桌面\tools\mychat1.0\Chat\app_data\chat.mdf   附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于   UNC   共享目录中。  
说明:   执行当前   Web   请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。  

异常详细信息:   System.Data.SqlClient.SqlException:   尝试为文件   C:\Documents   and   Settings\Administrator\桌面\tools\mychat1.0\Chat\app_data\chat.mdf   附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于   UNC   共享目录中。

源错误:  


行   27:                           SqlDataReader   Reader;
行   28:                           if   (Con.State   !=   ConnectionState.Open)
行   29:                                   Con.Open();//打开数据库连接     这里出现错误的代码。
行   30:                           SqlCommand   Com   =   new   SqlCommand(search,   Con);
行   31:                           Reader   =   Com.ExecuteReader();//执行sql语句
是刚接触sql   server   2005   和   VS2005,OS是vista

string   path   =   @ "C:\Documents   and   Settings\Administrator\桌面\tools\mychat1.0\Chat ";
                        str   =   "Data   Source=.\\SQLEXPRESS;AttachDbFilename=\ " "   +   path   +   "\\app_data\\chat.mdf\ ";Integrated   Security=True;User   Instance=True ";
在网上查了很多,问题还是依旧。好几个星期了,恨死这个几个字了,“附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于   UNC   共享目录中。”


------解决方案--------------------
ereryone设置写入权限
首选要确认已经为C分区以及C分区的子文件夹和文件分配了Users组的“读取”权限。如果问题仍然存在,请使用SQL Server Management Studio连接到SQLEXPRESS数据库实例,检查是否有名称是“Database”的数据库存在。如果有,分离同名数据库即可。

------解决方案--------------------
附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中。

是不是有同名的数据库?或更改数据库的文件名,逻辑名试试.
------解决方案--------------------
不会是要附加的数据库文件在客户端,而连接用于附加的sql在另一台服务器上吧?

如果这样的话,肯定是不能附加成功的
------解决方案--------------------
SqlConnectionStringBuilder的AttachDBFilename属性,对应connectionString中的AttachDBFilename,“AttachDBFilename”可以写成“extended properties”,“initial file name”。AttachDbFileName属性指定连接打开的时候动态附加到服务器上的数据库文件的位置。这个属性可以接受数据库的完整路径和相对路径(例如使用|DataDirectory|语法),在运行时这个路径会被应用程序的App_Data目录所代替。
_________________________________
我想到的解释是,每次要建立数据库连接时,由于上面属性要动态加载数据库;而你的数据库服务器上已经有上述同名数据库,使得每次Con.Open()建立连接出现
"附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中。 "的错误.
修复问题的办法是修改连接字符串,直接指定database=chat,然后把指定的数据库文件.mdf附加到服务器即可.