1

我经常需要将现有 SQL Server DB 的完整架构提取到文件中。我需要涵盖每个对象——表、视图、函数、SP、UDDT、触发器等。目的是我可以使用文件差异实用程序将该模式与基线引用进行比较。

通常我使用 Enterprise Manager 或 Management Studio 编写数据库对象的脚本,然后将这些文件连接起来,以一致的可预测顺序生成一个大文件。我想知道是否有办法在 Python 中完成这项任务?显然它需要一个额外的包,但是在查看了一些(pyodbc、SQLAlchemy、SQLObject)之后,它们似乎都不适合这个用例。

4

2 回答 2

4

如果您可以连接到 SQL Server 并在 Python 中运行查询,那么可以——这是可能的,但需要大量的努力和测试才能使其正常工作。

想法是使用系统表来获取每个对象的详细信息,然后基于此生成 DDL 语句。sys.syscomments 表中已经存在一些(如果不是全部)DDL 语句。

在开始使用 Python 之前,首先在 SSMS 中执行和检查它。

select *
from sys.tables

select *
from sys.all_columns

select *
from sys.views

select *
from sys.syscomments

来自 MSDN 的所有系统表文档。

于 2013-07-31T11:52:26.287 回答
3

我过去使用过这种 PowerShell 策略。显然,这不是 Python,但它是一个您可以编写然后在 Python 中执行的脚本。阅读本文,因为它可能是您最简单(也是最便宜)的解决方案:http: //blogs.technet.com/b/heyscriptingguy/archive/2010/11/04/use-powershell-to-script-sql-database -objects.aspx

作为免责声明,我只导出存储过程,而不是每个对象。

于 2013-07-30T23:07:39.870 回答