环境:vs2012
数据库:SQL Server 2012
身份验证:windows 身份验证
服务器:本地 IIS 7
框架:MVC4
错误信息:
Cannot create file
'D:\H2\tools\CTools\CTools\App_Data\CTools.Models.codeVersionDbContest.mdf'
because it already exists. Change the file path or the file name, and retry the
operation.
CREATE DATABASE failed. Some file names listed could not be
created. Check related errors.
代码:
IQueryable<DiffInfo> persons = from p in db.diffinfors
orderby p.ID descending
select p;
在本地 IIS 调试到这一句的时候,提示数据库已经存在,不能创建数据库。使用vs自带的 IIS Express 调试则正常,没有任何报错,求解?
IQueryable<DiffInfo> persons = null;
try
{
persons = from p in db.diffinfors
orderby p.ID descending
select p;
// long totalCount = db.diffinfors.Count();
}
//catch (System.Data.SqlClient.SqlException e)
//{
// string err = e.InnerException.ToString();
//}
catch (System.Data.ProviderIncompatibleException e)
{
/* err = "System.Data.ProviderIncompatibleException:
* 提供程序未返回 ProviderManifestToken 字符串。
* ---> System.Data.SqlClient.SqlException:
* 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。
* 未找到或无法访问服务器。请验证实例名称是否正确并且
* SQL Server 已配置为允许远程连接。
* (provider: SQL Network Interfaces, error: 50 - 发生了本...
*
* 修改IIS权限:应用程序池->高级设置->进程模型->标识->LocalSystem
* */
string err = e.InnerException.ToString();
}
这行代码一直抛出这个异常,最终查询返回为空,连不上数据库
修改你的WebConfig 的ConnectionString,明显不是连的SqlServer 。
<!--<add name="codeVersionDbContext" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\CTools.mdf;Integrated Security=True;uid=sa;pwd=h2-ctools" providerName="System.Data.SqlClient" />-->
<add name="codeVersionDbContext" connectionString="Server=10.18.68.114,1434\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\CTools.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />
<!--add name="codeVersionDbContext" connectionString="Data Source=ARIESSHI-PC0\SQLEXPRESS;AttachDbFilename=D:\H2\tools\CTools\CTools\App_Data\CTools.Models.codeVersionDbContest.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />-->
各种形式的连接字符串都试过了,对结果没有任何影响,
一个高手将我的数据库访问类的基类进行初始化,将数据库连接传入DbContext基类后,一切搞定。如果不初始化基类,在使用IIS EXPRESS调试的时候是OK的。
由于我之前设置了许多和SQL权限,IIS权限相关的东西,后面还有研究一下该问题和我之前的权限设置是否相关。