解析 SQL Server 数据库的脚本
Posted
技术标签:
【中文标题】解析 SQL Server 数据库的脚本【英文标题】:Parsing SQL Server Database's Script 【发布时间】:2011-08-21 08:20:31 【问题描述】:我目前正在开发一个项目,该项目负责根据其架构生成数据库模型,我想知道 .Net 中是否有任何库能够解析 SQL 脚本文件和允许我:
从脚本中获取数据库名称
获取表名
获取每个表的列
以及您所知道的用于生成模型的任何内容
任何建议都会有所帮助。
【问题讨论】:
“我目前正在从事一个项目,该项目负责根据其架构生成数据库模型” - erm,VS 2008 和 VS2010 已经具备此能力:数据库项目。失败的 SMO... 我的应用程序是一个基于Web的应用程序,它将托管在非专用服务器上,因此无法直接访问数据库。我希望每个用户都能上传脚本文件并下载生成的模型。 您可以查看Microsoft.Data.Schema.ScriptDom 来解析 TSQL 脚本。 【参考方案1】:除了 SMO 之外,没有任何图书馆适合这项工作。最好对 sql 系统模式进行查询。请以以下脚本为例:
SELECT
SPECIFIC_NAME as SpName,
PARAMETER_NAME as ParameterName,
DATA_TYPE as DbType,
CHARACTER_MAXIMUM_LENGTH as Size
FROM INFORMATION_SCHEMA.PARAMETERS
WHERE PARAMETER_MODE = 'IN' OR PARAMETER_MODE = 'INOUT'
此脚本获取存储过程参数。或
SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.yourTableName')
用于获取表格列。 我建议你不要使用 SMO。
【讨论】:
你对 SMO 有什么看法?你能澄清为什么你不会使用 SMO 吗?? 我总是对新版本有问题。这是我的意见。 @Mitch Wheat:我正在阅读 SMO 概述,SMO 是否能够满足我发布的要求? 是的。 SMO 过去的名声不好:它的大多数问题都可以修复。可能感兴趣:mitch-wheat.blogspot.com/2011/07/…【参考方案2】:比我预期的要多
ANTLR
SQLParser
Fantastic Tutorial-SQL Parser
【讨论】:
以上是关于解析 SQL Server 数据库的脚本的主要内容,如果未能解决你的问题,请参考以下文章
如何转换SQL Server 2008数据库到SQL Server 2005
如何在 sql server 2005 中编写 sql server 数据库图表脚本?