データベースからファイル名のないパスを取得しようとしています。任意のデータベースの物理ファイルパスを取得する
declare @db_name varchar (50)
SELECT @db_name = physical_name FROM sys.master_files WHERE database_id = DB_ID(N'master') AND type_desc = 'ROWS'
set @db_name = REVERSE(RIGHT(REVERSE(@db_name),(LEN(@db_name)-CHARINDEX('\', REVERSE(@db_name),1))+1))
print @db_name
普通のデータベースをチェックしても、masterデータベースで試したときに動作します。
C:\ Program Files \ MicrosoftのSQLサーバ\
は、しかし、正しいパスは次のとおりです。
C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\
なぜそれがパスの残りの部分を逃した私はこれを取得します?
ありがとうございました。
また、データベースが複数のファイルから構成されてもよいことに注意する必要があり、これらの各ファイルはですることができ別の場所。したがって、*パス*または*すべてのパスとは対照的に*パス*について話すのは理にかなっていないかもしれません* –