Bex*_*Bex 3 c# asp.net sql-server-2008 sql-server-2008-r2
我有一个令人难以置信的奇怪问题,我一直试图解决这个问题差不多一天,现在我正在对着一堵砖墙,需要帮助!
我在Windows 7 PC 上创建了一个.NET 4 C#网站,新安装了SqlServer 2008 Express R2,一切正常.
我上传了数据库和网站.该网站现在位于Windows Web Server 2008 R2(带有Service Pack 1)上 .数据库位于运行带有SQL Server 2008 R2的Windows Server 2008 R2 Standard的其他服务器上.
该网站的其余部分运行正常并连接到数据库正常,除了一个页面,我已经缩小到一个存储过程调用返回没有行.
我简化了对此的调用:
DataSet ds = new DataSet();
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["myConn"].ToString());
SqlCommand cmd = new SqlCommand("MYSP 'param1', param2, param3", conn);
cmd.CommandType = CommandType.Text;
conn.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
Response.Write("ROWS COUNT IN GET DS " + ds.Tables[0].Rows.Count);
conn.Close();
cmd.Dispose();
return ds;
Run Code Online (Sandbox Code Playgroud)
对于上述任何一种情况,如果我在本地PC上对数据库的精确副本运行它会返回2行,如果我直接在实时服务器上的Sqlserver Management Studio中运行它返回2行,但如果我通过ASP.net在实时服务器上它没有返回任何行!
谁能流光??? 我疯了!
更新即使我使用命令类型文本,我已经尝试过它作为命令类型存储过程与分隔参数(如下)但它没有区别
cmd.CommandType = StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@param1", param1));
cmd.Parameters.Add(new SqlParameter("@param2", param2));
cmd.Parameters.Add(new SqlParameter("@param3", param3));
Run Code Online (Sandbox Code Playgroud)
UPDATE
谢谢大家的意见!
答案是:
该网站使用的数据库用户设置为"英国英语"(默认情况下)..我没有意识到这一点,因为它是一个新的服务器!
在其他任何地方,用户都设置为"英语",因此将用户更改为英语可以修复它!
通常要尝试的事情:当您登录数据库运行查询时,您是否正在使用asp.net进程正在使用的SAME用户?你可能会发现,如果你使用两个用户,它们的设置可能不同(一个是EN-GB,一个是EN-US),这会给你奇怪的日期问题?另外,你可能会发现两者的priveldges都不同,所以一个人有tempDb权限,另一个没有?
| 归档时间: |
|
| 查看次数: |
2226 次 |
| 最近记录: |