更改sql server数据库文件位置的脚本

时间:2017-05-23 14:45:14

标签: sql-server

我需要更改实例中数据库的所有文件位置。基本上,由于当前目录的tospace限制,我需要将实例移动到同一服务器上的新位置。这些文件将全部移动到同一个新位置,名称将保持不变。所以它只是需要改变的路径。 (这听起来很简单,令人沮丧的是我无法让它工作。:-))

我正在尝试使用sp_MSForEachDB,但似乎无法正确传递引号来传递FILENAME = parameter ALTER DATABASE命令的DECLARE @command NVARCHAR(1000)--, @filename NVARCHAR(100) SELECT @command = ' BEGIN DECLARE @filename nvarchar(100) USE ? SELECT @filename = "F:\DevworxExtStorage\Databases\MSSQL12.DEVSQL2014\MSSQL\DATA\" + ? + ".mdf" ALTER DATABASE ? MODIFY FILE ( NAME = ?, FILENAME = "F:\DevworxExtStorage\Databases\MSSQL12.DEVSQL2014\MSSQL\DATA\") SELECT @filename = "F:\DevworxExtStorage\Databases\MSSQL12.DEVSQL2014\MSSQL\DATA\" + ? + "_log.ldf" ALTER DATABASE ?_log MODIFY FILE ( NAME = ?, FILENAME = @filename) END' exec sp_MSforeachdb @command SELECT @command = 'ALTER DATABASE ? SET offline' exec sp_MSforeachdb @command 中的新文件位置。

这是我到目前为止所拥有的。

mongoimport

我正在

  

Msg 102,Level 15,State 1,Line 10'@ filename'附近的语法不正确。

这是一个开发数据库实例,因此上下调整不是问题。我更喜欢这种方法而不是备份/恢复,因为它将在几秒钟而不是几分钟内完成。 我们将来也会多次使用它,因此将其作为脚本非常重要。我知道手动发布脚本中的步骤。

我只需要帮助调试脚本,我认为这是一个引号正确的问题。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

你必须改变一点引号:

@app.route('/binary_object/{bucket}/{key}', methods=['GET', 'PUT'])
def binary_object(bucket, key):
    request = app.current_request
    if request.method == 'GET':
        try:
            file_path = '/tmp/{}_{}'.format(uuid.uuid4(), key)
            s3_client.download_file(bucket, key, file_path)
            file_size = os.path.getsize(file_path)
            headers = {'Content-Disposition': 'attachment; filename=\"' + key + '\"',
                       'Content-Type': 'application/octet-stream',
                       # 'Content-Type': 'image/*',
                       'Content-Length': str(file_size)}

            fsk = open(file_path, 'rb')
            return Response(body=fsk, headers=headers, status_code=200)
        except Exception as e:
            print e
            raise e

对字符串使用单引号,并使用双引号来转义单引号。