【问题标题】:Parsing SQL Server Database's Script解析 SQL Server 数据库的脚本
【发布时间】:2011-08-21 08:20:31
【问题描述】:

我目前正在开发一个项目,该项目负责根据其架构生成数据库模型,我想知道 .Net 中是否有任何库能够解析 SQL 脚本文件和允许我:

  1. 从脚本中获取数据库名称

  2. 获取表名

  3. 获取每个表的列

  4. 以及您所知道的用于生成模型的任何内容

任何建议都会有所帮助。

【问题讨论】:

  • “我目前正在从事一个项目,该项目负责根据其架构生成数据库模型” - erm,VS 2008 和 VS2010 已经具备此能力:数据库项目。失败的 SMO...
  • 我的应用程序是一个基于Web的应用程序,它将托管在非专用服务器上,因此无法直接访问数据库。我希望每个用户都能上传脚本文件并下载生成的模型。
  • 您可以查看Microsoft.Data.Schema.ScriptDom 来解析 TSQL 脚本。

标签: c# .net sql sql-server parsing


【解决方案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】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    相关资源
    最近更新 更多