如题!
新建一个数据库,然后手动删除.ldf和.mdf两个文件
这时数据库sysdatabases中存在新建的数据库名,但是连接时会失败。
寻求sql语句判断是否能连接到新建数据库的sql语句
做判断用的!

解决方案 »

  1.   

    if exists(select 1 from sys.databases where name='xxx' )
    ...
      

  2.   

    if exists(select 1 from sys.databases where name='xxx' and  database_id>4)
    ...
      

  3.   

    关闭数据库服务器后,收到找到数据库存放数据库文件的data目录删掉。
    然后在mater库中使用
    select * from sysdatabases where name='xxx' 新建的库名字是存在的。
    但是数据库实体文件(物理文件)已经没有了。
    这个时候我需要数据库有什么方法可以判断物理文件是否存在的方法吗?
      

  4.   

    这个没有了吧,是什么指没有方法,还是sysdatabases 中也不存在了?
    如果是指sysdatabases 中也不存在,大家可以试试,看看结果如何?
    我使用的是sql20000
      

  5.   


    declare @x varchar(1000)select @x=filename from master.dbo.sysdatabases where name='DBAP'exec xp_fileexist @xFile Exists File is a Directory Parent Directory Exists
    ----------- ------------------- -----------------------
    1           0                   1--> File Exists 为 1, 说明文件存在.
                    为 0. 则说明不存在.
      

  6.   

    11楼的说的这个可以判断
    刚找了下面这个方法也可判断
    用这个就可以判断了....
    if (has_dbaccess('databasename') = 1) 如果使用者有資料庫的存取權,HAS_DBACCESS 會傳回 1;如果沒有存取權,則會傳回 0;如果資料庫名稱無效,則會傳回 NULL。可以结贴了,谢谢大家  
      

  7.   

    说错了 ap0405140 说的 xp_fileexist 的可以判断 has_dbaccess 只能判断是否具有访问权限,前提也是数据库必须存在,不然会报错的。
    使用方法是
    @declare @Result intexec xp_fileexist 'databasefullpath',@Result output@Result 值为0时,证明物理文件不存在,1时存在。
     
    databasefullpath 在 master.dbo.sysdatabases 的 filename 字段下。
    再次感谢 ap0405140