标签: database-restore

加速数据库恢复

我正在使用 MS SQL 2008 R2 (10.50.1600)

我想知道为什么我的数据库非常小(近 1200 行,只有 2 个表),恢复速度这么慢(12-15 秒)。我想它与数据库内的日志文件有关(我不确定)。问题是我不关心日志文件。我只对 mdf 文件感兴趣。是否可以加快数据库恢复速度?恐怕对于一些较大的数据库来说,这将需要很长时间。恢复时间对我来说很重要。

我这样做是这样的:

BACKUP DATABASE TEST TO DISK = 'myDataBase' WITH INIT

RESTORE DATABASE TEST 
FROM DISK = 'myDataBase' 
WITH REPLACE
------------------------------------------------------------------------
Processed 256 pages for database 'myDataBase', file 'myDataBase' on file 1.
Processed 1 pages for database 'myDataBase', file 'myDataBase_log' on file 1.
RESTORE DATABASE successfully processed 257 pages in 12.218 seconds (0.164 MB/sec).
Run Code Online (Sandbox Code Playgroud)

我做了一些其他测试,并创建了空的全新数据库。恢复该数据库只花了不到一秒的时间。备份与之前相同。恢复报告:

Processed 176 pages for database 'TEST', file 'TEST' on file 1.
Processed …
Run Code Online (Sandbox Code Playgroud)

database sql-server database-restore database-backups database-performance

5
推荐指数
1
解决办法
3215
查看次数

如何将 schema .sql 文件导入 Postgresql 数据库?

我正在尝试将旧数据库的 schema.sql 文件导入到 postgresql 中新创建的数据库中。

您能否让我知道执行此操作需要遵循的步骤。

环境:linux centos 7 DB:postgresql 9.3 我已将 schema.sql 文件复制到目录 /var/lib/pgsql/9.4/data/ 中。

问候。

postgresql database-restore database-schema postgresql-9.3

5
推荐指数
2
解决办法
2万
查看次数

5
推荐指数
1
解决办法
1万
查看次数

恢复SQLite DB文件

我正在我的Android应用程序中实现备份/恢复系统.

每隔几分钟就会发生一次自动备份.在我的应用程序被卸载然后再次安装之后,我正在尝试从我的SD卡恢复我的数据库备份文件.

备份有效,但问题在于:
每当用户再次安装我的应用程序时,就会发现文件未找到异常,但是,如果用户关闭应用程序,然后再次打开它,则恢复就可以了.不知何故,恢复首次启动应用程序时会遇到问题.

还原必须在首次启动时进行.

注意: backupExists函数返回true.

@Override
public void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if(backUpExists()){

        restoreDB();
      }
}
     private boolean backUpExists()
  {
    try{
        File sd = Environment.getExternalStorageDirectory();
        if (sd.canRead()){
            String backupDBPath = "myDB";
             File backupedDB = new File(sd, backupDBPath);
             if(backupedDB.exists()){
                 return true;
             }
        }
    } catch(Exception ex) {
         Toast.makeText(getBaseContext(), ex.toString(), Toast.LENGTH_LONG).show();
    }
        return false;
  }
  private void restoreDB()
  {
    try{
        File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();

        if (sd.canWrite()) {
            String restroredDBPath = "//data//myPackage//databases//myDB";
            String backupDBPath = "myDB"; …
Run Code Online (Sandbox Code Playgroud)

sqlite android database-restore database-backups android-sdcard

4
推荐指数
1
解决办法
1万
查看次数

变量名称和字符串连接'+'错误作为不正确的语法

RESTORE DATABASE Umbraco6
FROM  DISK = 'C:\Temp\initial_db.bak'
    WITH  MOVE 'Umbraco6'     TO @db_physical_path  + '\test_data.mdf',
MOVE 'Umbraco6_log' TO  @db_physical_path + '\test_data.ldf',
REPLACE
Run Code Online (Sandbox Code Playgroud)

在上面的SQL脚本中我收到错误:

'''附近的语法错误不正确.

有任何想法吗?

sql-server database-restore

4
推荐指数
1
解决办法
1022
查看次数

在pg_restore期间禁用WAL归档?

假设我pg_dump在进行大规模的破坏性迁移之前对Postgres 9.3数据库进行了快速备份转储,我发现我想撤消它.在此期间没有对DB执行任何写入操作.

假设我运行pg_restore -c -d mydb < foo.dump将转储加载回数据库.假设我已经设置WAL-E来存档每个16mb的WAL,我是否需要archive_mode在执行恢复之前关闭?当我将转储写回数据库时,归档xlog对我来说是非常有用的,因为我已经在转储之前已经存档了完全有效的基本备份和WAL段.当我恢复转储时,执行xlog传输也会产生严重后果,因为转储的大小会变得更糟.

在恢复之前,您最终会禁用存档吗?你还做其他什么来加快速度吗?在这篇文章中讨论了恢复性能,但它根本不涉及归档,除非我遗漏了一些东西.

postgresql archiving database-restore wal postgresql-9.3

4
推荐指数
1
解决办法
2528
查看次数

如何使用C#和SMO终止与SQL Server数据库的所有连接?

我正在尝试.BAK使用C#和SMO 从文件中恢复数据库.这是我的代码.

public static void RestoreDatabase()
{
    string dbConnString = Configuration.DatabaseConnectionString;
    ServerConnection connection = new ServerConnection(@"dbserver\sqlexpress", "user", "password");
    Server smoServer = new Server(connection);

    Restore rstDatabase = new Restore();
    rstDatabase.Action = RestoreActionType.Database;
    rstDatabase.Database = "AppDb";

    BackupDeviceItem bkpDevice = new BackupDeviceItem(@"TestData\db-backup.bak", DeviceType.File);
    rstDatabase.Devices.Add(bkpDevice);
    rstDatabase.ReplaceDatabase = true;

    // Kill all processes
    smoServer.KillAllProcesses(rstDatabase.Database);

    // Set single-user mode
    Database db = smoServer.Databases[rstDatabase.Database];
    db.DatabaseOptions.UserAccess = DatabaseUserAccess.Single;
    db.Alter(TerminationClause.RollbackTransactionsImmediately);

    rstDatabase.SqlRestore(smoServer);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行此方法时,我尝试杀死所有进程时收到以下(错误)消息:

无法使用KILL来杀死自己的进程.

如果有人能帮忙解决这个问题,我将非常感激.

.net c# sql-server smo database-restore

4
推荐指数
2
解决办法
3687
查看次数

MongoDB FailedToParse:值中的错误字符

我有一个简单的mongodb数据库.我正在使用mongodump倾销.

dump命令

mongodump --db user_profiles --out /data/dumps/user-profiles
Run Code Online (Sandbox Code Playgroud)

以下是user_profiles数据库的内容.它有一个集合(user_data),包含以下内容:

{ "_id" : ObjectId("555a882a722f2a009fc136e4"), "username" : "thor", "passwd" : "*1D28C7B35C0CD618178988146861D37C97883D37", "email" : "thor@avengers.com", "phone" : "4023331000" }
{ "_id" : ObjectId("555a882a722f2a009fc136e5"), "username" : "ironman", "passwd" : "*626AC8265C7D53693CB7478376CE1B4825DFF286", "email" : "tony@avengers.com", "phone" : "4023331001" }
{ "_id" : ObjectId("555a882a722f2a009fc136e6"), "username" : "hulk", "passwd" : "*CB375EA58EE918755D4EC717738DCA3494A3E668", "email" : "hulk@avengers.com", "phone" : "4023331002" }
{ "_id" : ObjectId("555a882a722f2a009fc136e7"), "username" : "captain_america", "passwd" : "*B43FA5F9280F393E7A8C57D20648E8E4DFE99BA0", "email" : "steve@avengers.com", "phone" : "4023331003" }
{ "_id" : ObjectId("555a882a722f2a009fc136e8"), …
Run Code Online (Sandbox Code Playgroud)

json database-restore mongodb bson

4
推荐指数
1
解决办法
2485
查看次数

错误:参数"TimeZone"的值无效:"Canada/East-Saskatchewan"

我正在导入一个使用psql(PostgreSQL)9.5.10的数据库.对于我的本地数据库v.9.6.5.

这是有问题的部分:

COPY timezone (id, name, windowsname, tzindex) FROM stdin;
...
315     Canada/East-Saskatchewan        \N      \N
...
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

pg_restore: [archiver (db)] Error while PROCESSING TOC: pg_restore: [archiver (db)] Error from TOC entry 9024; 0 48454 TABLE DATA timezone skysms pg_restore: [archiver (db)] COPY failed for table "timezone": ERROR: invalid value for parameter "TimeZone": "Canada/East-Saskatchewan" CONTEXT: SQL statement "SET local timezone to 'Canada/East-Saskatchewan'" PL/pgSQL function display_in_other_tz(timestamp with time zone,text,text) line 7 at EXECUTE statement COPY timezone, line 315: "315 Canada/East-Saskatchewan \N \N"

database postgresql timezone database-restore

4
推荐指数
1
解决办法
1286
查看次数

无法覆盖。数据库正在使用它

RESTORE DATABASE Tes
FROM DISK = '{7522204E-0256-47B3-9864-137D6D1FD449}6' 
WITH MOVE 'Test' TO 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\Tes.mdf',
MOVE 'Test_log' TO 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\Tes.ldf'
Run Code Online (Sandbox Code Playgroud)

上面的restore命令对于新数据库正常工作,但是很少有旧数据库显示错误,例如

无法覆盖文件“ C:\ Program Files(x86)\ Microsoft SQL Server \ MSSQL12.SQLEXPRESS \ MSSQL \ DATA \ db1.mdf”。数据库“ windb”正在使用它。消息3156,级别16,状态4,行1文件'windb'无法还原到'C:\ Program Files(x86)\ Microsoft SQL Server \ MSSQL12.SQLEXPRESS \ MSSQL \ DATA \ db1.mdf'。使用WITH MOVE标识文件的有效位置

我发现只有具有多个ndf文件的数据库才出现此问题。

这个问题有什么解决办法吗?

sql-server database-restore

4
推荐指数
2
解决办法
7246
查看次数