web-dev-qa-db-ja.com

データベース.bakファイルはSQL Server Management Studioからどこに保存されますか?

SQL Server Management Studio 2008 Expressを使用して、SQL Serverデータベースのバックアップを作成しようとしていました。バックアップを作成しましたが、見つけられないパスに保存されています。ローカルHDに保存して、Program Files>Microsoft SQL Server>MSSQL 1.0>MSSQL>DATA>しかし、そこにはありません。

このDB .bakのデフォルトの保存パスは何ですか?

29
Cipher

である必要があります

Program Files>Microsoft SQL Server>MSSQL 1.0>MSSQL>BACKUP>

私の場合は

C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup

GuiまたはT-SQLを使用する場合、T-SQLの例の場所を指定できます

BACKUP DATABASE [YourDB] TO  DISK = N'SomePath\YourDB.bak' 
WITH NOFORMAT, NOINIT,  NAME = N'YourDB Full Database Backup', 
SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

T-SQLを使用すると、バックアップの場所も取得できます。こちらを参照してください SQL Serverデータベースの物理デバイス名とバックアップ時間の取得

SELECT          physical_device_name,
                backup_start_date,
                backup_finish_date,
                backup_size/1024.0 AS BackupSizeKB
FROM msdb.dbo.backupset b
JOIN msdb.dbo.backupmediafamily m ON b.media_set_id = m.media_set_id
WHERE database_name = 'YourDB'
ORDER BY backup_finish_date DESC
48
SQLMenace

バックアップが既定の場所に作成されなかった場合、このT-SQL(SSMSでこれを実行)を使用して、SQL Serverインスタンス上のすべてのDBの最新のバックアップのファイルパスを見つけることができます。

SELECT  DatabaseName = x.database_name,
        LastBackupFileName = x.physical_device_name,
        LastBackupDatetime = x.backup_start_date
FROM (  SELECT  bs.database_name,
                bs.backup_start_date,
                bmf.physical_device_name,
                  Ordinal = ROW_NUMBER() OVER( PARTITION BY bs.database_name ORDER BY bs.backup_start_date DESC )
          FROM  msdb.dbo.backupmediafamily bmf
                  JOIN msdb.dbo.backupmediaset bms ON bmf.media_set_id = bms.media_set_id
                  JOIN msdb.dbo.backupset bs ON bms.media_set_id = bs.media_set_id
          WHERE   bs.[type] = 'D'
                  AND bs.is_copy_only = 0 ) x
WHERE x.Ordinal = 1
ORDER BY DatabaseName;
14
Kenny Evitt

サーバーインスタンスのレジストリアイテムを設定します。例えば:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.2\MSSQLServer\BackupDirectory

2
Hink

Faiyazによると、インスタンスのデフォルトのバックアップ場所を取得するには、msdbに取得することはできませんが、レジストリを調べる必要があります。次のようなxp​​_instance_regreadストアドプロシージャを使用して、T-SQLで取得できます。

EXEC  master.dbo.xp_instance_regread 
      N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer',N'BackupDirectory'

二重バックスラッシュ(\\)は、そのキー名部分(Microsoft SQL Server)にスペースがあるためです。 「MSSQL12.MSSQLSERVER」の部分は、SQL 2014のデフォルトのインスタンス名です。独自のインスタンス名を入れるように調整する必要があります(レジストリを調べます)。

2
Matt Roy

デフォルトのバックアップ場所はSQLサーバー自体に保存されているとは思わない。設定はレジストリに保存されます。 "BackupDirectory"キーを検索すると、デフォルトのバックアップが見つかります。

"msdb.dbo.backupset"テーブルは、データベースのバックアップが取られていない場合、取られたバックアップのリストで構成されます。何も表示されません

1
Faiyaz

以下のスクリプトを使用し、DatabaseNameをバックアップしたデータベースの名前に切り替えます。 physical_device_name列には、バックアップされたデータベースの完全なパスがあります。

select a.backup_set_id, a.server_name, a.database_name, a.name, a.user_name, a.position, a.software_major_version, a.backup_start_date, backup_finish_date, a.backup_size, a.recovery_model, b.physical_device_name
from msdb.dbo.backupset a join msdb.dbo.backupmediafamily b
  on a.media_set_id = b.media_set_id
where a.database_name = 'DatabaseName'
order by a.backup_finish_date desc
1
Pascal

やってみました:

C:\ Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\Backup

先週のすべてのバックアップを取得するスクリプトは、次の場所にあります。

http://wraithnath.blogspot.com/2010/12/how-to-find-all-database-backups-in.html

そこにも多くのバックアップSQLスクリプトがあります。

http://wraithnath.blogspot.com/search/label/SQL

0
WraithNath

...\Program Files\Microsoft SQL Server\MSSQL 1.0\MSSQL\Backup

0
Kenny Evitt