declare  @path  varchar(200)  
select  @path  =  filename  from  master.dbo.sysfiles  
set  @path  =  ltrim(REVERSE(@path))  
set  @path  =  REVERSE(substring(@path,CHARINDEX('\',@path),len(@path)))  
print  @path  

解决方案 »

  1.   

    select filename  from  master..sysfiles 
    即为你的数据库文件名
      

  2.   

    这个只是得到master 的路径吧?不能通用
      

  3.   

    动态确定数据库路径。是access还是SQL
      

  4.   

    if exists (select * from sysobjects where id = object_id(N'[dbo].[up_dbpath]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[up_dbpath]
    GO
    -- 名称: up_dbpath
    -- 功能: 查询数据库所在路径
    -- 返回: ① 标准结果集
    --       CREATE PROCEDURE up_dbpath 
    @p_dbname varchar(256) = NULL --数据库名字,为空则是master
    -- with encryption
    AS  declare @path varchar(200),@datapath varchar(200), @logpath varchar(200), @sql varchar(4000),@datafiles varchar(256)
    if @p_dbname is not NULL
    begin
    select @path=rtrim((filename)) from master..sysdatabases where name=@p_dbname
    end
    else
    select @path = filename from master.dbo.sysfiles set @path = ltrim(REVERSE(@path))
    set @path = REVERSE(substring(@path,CHARINDEX('\',@path),len(@path)))

    select @path as path
    GO
    SET QUOTED_IDENTIFIER  OFF    SET ANSI_NULLS  ON 
    GOSET QUOTED_IDENTIFIER OFF SET ANSI_NULLS ON 
    GO