ASP.NET存储的proc调用不会返回任何行,但在Management Studio中也是如此!

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

谢谢大家的意见!

答案是:

该网站使用的数据库用户设置为"英国英语"(默认情况下)..我没有意识到这一点,因为它是一个新的服务器!

在其他任何地方,用户都设置为"英语",因此将用户更改为英语可以修复它!

Oxo*_*mer 5

通常要尝试的事情:当您登录数据库运行查询时,您是否正在使用asp.net进程正在使用的SAME用户?你可能会发现,如果你使用两个用户,它们的设置可能不同(一个是EN-GB,一个是EN-US),这会给你奇怪的日期问题?另外,你可能会发现两者的priveldges都不同,所以一个人有tempDb权限,另一个没有?