使用SMO和Windows身份验证时在XP中抛出ConnectionFailureException

时间:2012-08-20 19:57:21

标签: asp.net sql-server windows-xp windows-authentication smo

我正在尝试在ASP.NET Web项目中使用SMO来获取服务器数据库的列表。我正在使用的方法似乎在Windows 7机器上正常工作,但第二个我在XP机器上安装它,我得到一个ConnectionFailureException。我用来建立连接的代码是:

        ServerConnection connection = new ServerConnection(serverName);
        Server serverConnection = new Server(connection);
        string[] databases;
        try
        {
            databases = new string[serverConnection.Databases.Count];
        }
        catch { databases = new string[0]; }

在Windows 7机器上,我得到一个空数组,但是有很多数据库,然后我将数据库名称添加到foreach循环中,但在Windows XP中,它在try块中失败,我得到了:

ConnectionFailureException: Failed to connect to server localhost. 
-> Login failed for user 'ComputerName\\ASPNET'.

我猜这是ASPNET用户的某种权限问题,但我似乎找不到任何解决问题的方法。在IIS中,我取消选择匿名访问并选择了集成Windows身份验证,然后设置

<authentication mode="Windows" /> 
web.config中的

任何人都有任何建议/类似sage的建议吗?

1 个答案:

答案 0 :(得分:1)

您是否希望Web应用程序模拟用户连接到SQL? 使用SQL Management Studio时,您将直接连接到SQL;当你从Web应用程序执行它然后你正在调用它,IIS调用你的SQL。现在的问题是IIS在访问SQL时使用哪个登录 - 是否在W7下冒充您并且不在XP下进行操作?

肯定XP不会冒充你并使用错误消息中显示的'ComputerName \ ASPNET'。 IIS6 ASPNET模拟设置描述为here和IIS7 here。默认情况下,两个IIS中的模拟都已关闭,但我不确定您在W7上的当前配置是什么。也许你应该在IIS6下打开它?