【问题标题】:How to test SqlServer connection without opening a database如何在不打开数据库的情况下测试 SqlServer 连接
【发布时间】:2008-09-30 19:08:02
【问题描述】:

标题几乎说明了一切。我想创建一个 SqlConnection 然后在不打开数据库的情况下检查该连接,因为那时我还不知道我将连接到哪里。有可能这样做吗? SqlConnection 类有一个“Open”成员,它试图打开您在 Database 属性中设置的数据库,如果您没有设置一个,SqlServer 会尝试使用主数据库。问题是我尝试连接的用户(MACHINE\ASPNET)可以访问一些数据库(我还不知道)而不是主数据库。

问候, 塞巴

【问题讨论】:

  • 那么,如果我理解正确的话,您是否试图获取 aspnet 用户有权访问的数据库列表?

标签: .net sql sql-server sqlconnection


【解决方案1】:

连接到临时数据库。每个人都可以访问 tempdb,因此您将能够验证自己的访问权限。稍后当您知道实际数据库时,您可以更改此属性以连接到您想要的数据库。

【讨论】:

    【解决方案2】:

    我不确定这是否是您需要的。

    Check if a user has access to a database in Sql Server 2005

    SELECT HAS_DBACCESS('Northwind');
    

    HAS_DBACCESS 返回有关用户是否有权访问指定数据库 (BOL) 的信息。

    查找当前用户有权访问的所有数据库

    SELECT [Name] as DatabaseName from master.dbo.sysdatabases
    WHERE ISNULL(HAS_DBACCESS ([Name]),0)=1
    ORDER BY [Name]
    

    【讨论】:

      【解决方案3】:

      如果您只需要知道服务是否处于活动状态,您可以尝试通过套接字连接到端口,看看它是否打开

      【讨论】:

        【解决方案4】:

        只是好奇...如果您不知道需要连接的准确数据库,您可以验证哪些信息? “真实”数据库可能出现的许多问题都无法通过这种测试连接进行测试,例如连接性或安全性。

        【讨论】:

        • 好吧...我只是想知道用户是否可以对 SqlServer 进行身份验证,因此,它是一个有效的服务器并且是该服务器中的有效登录名...我想答案是否定的't
        【解决方案5】:

        我不知道你是否得到了答案,但是当我们都在这里寻找答案时,我希望这就是你想要的

        dim con as new sqlconnection
        con.connectionstring="<<put your conn string here>>"
        'try...catch block fires exception if the con is not successfully opened
        try
        con.open()
        catch ex as exception
        msgbox ex.message
        end try
        

        【讨论】:

        • 我不认为你理解这个问题......这正是我的观点,Lerning 的回答是我问题的关键Everybody has accecss to tempdb
        猜你喜欢
        • 2015-09-06
        • 2019-05-12
        • 1970-01-01
        • 2020-02-07
        • 1970-01-01
        • 2021-08-22
        • 2013-12-06
        • 2012-04-03
        • 2021-05-15
        相关资源
        最近更新 更多