小编use*_*797的帖子

如何在不知道目标路径或文件名的情况下还原SQL Server数据库备份?

我需要以编程方式(T-SQL)还原SQL Server 2008中的数据库备份.此备份来自不同的服务器,原始数据库名称也可能不同.(实际上,我将数据库从某个服务器复制到另一台服务器上的新数据库.)

显然,我必须使用RESTORE DATABASE ... WITH MOVE,哪个有效,但我需要知道应该将文件恢复到哪里以及如何命名它们.尽管搜索,我还没有找到最基本的任务:只使用默认路径和文件名,即执行SQL Server时执行的任何操作CREATE DATABASE- 您不必指定路径命令,为什么需要一个RESTORE

我是否忽略了一些简单的解决方案,或者我是否真的必须列出文件,以某种方式从SQL Server配置中找到数据库目录,并使用该信息构建RESTORE命令?谢谢.

(与PostgreSQL相比,使用pg_restore时,你指定一个已经创建的目标数据库;当你创建它时,你有选择 - 不是强制性的 - 指定一个非默认的表空间,但是如果你没有,那么你只是不关心文件的物理存储位置.)

t-sql sql-server database-restore sql-server-2008

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

如何禁止显示后续异常的父异常(原因)

我知道raise ... from None并已阅读当我在响应中提出自己的异常时,如何更容易地抑制先前的异常?.

但是,如何在不控制从except子句执行的代码的情况下实现同样的效果(抑制"处理上述异常,发生另一个异常"消息)?我认为sys.exc_clear()可以用于此,但Python 3中不存在该功能.

我为什么这么问?我有一些看起来像(简化)的简单缓存代码:

try:
    value = cache_dict[key]
except KeyError:
    value = some_api.get_the_value_via_web_service_call(key)
    cache_dict[key] = value
Run Code Online (Sandbox Code Playgroud)

当API调用中出现异常时,输出将如下所示:

Traceback (most recent call last):
  File ..., line ..., in ...
KeyError: '...'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ..., line ..., in ...
some_api.TheInterestingException: ...
Run Code Online (Sandbox Code Playgroud)

这是误导性的,因为原始KeyError根本不是一个错误.我当然可以通过将try/except(EAFP)更改为密钥存在的测试(LBYL)来避免这种情况,但这不是非常Pythonic且不太线程友好(不是上面的线程安全,但是那是除此之外).

期望some_api中的所有代码都将其更改raise Xraise X from None(并且在所有情况下甚至都没有意义)是不合理的.是否有一个干净的解决方案来避免错误消息中不需要的异常链?

(顺便说一下,奖励问题:我在示例中使用的缓存事物基本上等同于cache_dict.setdefault(key, some_api.get_the_value_via_web_service_call(key)),如果只有setdefault的第二个参数可以是一个只能在需要设置值时调用的可调用的.是不是有一个更好/规范的方式吗?)

python exception-handling exception python-3.x

10
推荐指数
1
解决办法
885
查看次数