将SQL Server脚本文本导入到Excel中
我有很多视图和存储过程,我需要定期查看,为此,我将SQL Server中的TSQL粘贴到一个Excel电子表格中,我可以创build公式来分析它。
有没有一种方法(使用VBA?)将定义的视图或存储过程中的实际脚本导入Excel中的单元格?
所以只是为了确认,我想返回脚本,而不是执行脚本的结果。
非常感谢
从SQL的angular度来看,您可以使用此查询来获取视图文本:
SELECT [definition] FROM sys.sql_modules m INNER JOIN sys.objects o ON m.object_id=o.object_id WHERE [name] = 'ViewName' AND [type] = 'V'
对于procs改变的地方:
WHERE [name] = 'Procname' AND [Type] = 'P'
编辑:这里是一个快速的VBA函数来返回这个数据,只需要replace连接的细节:
Public Function GetObject(ByVal nm As String, ByVal Tp As String) As String Set objMyConn = New ADODB.Connection Set objMyRecordset = New ADODB.Recordset Dim strSQL As String Dim retval As String With objMyConn .ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=[MyID];Password=[MyPass];Data Source=[ServerName];" & _ "Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;" & _ "Tag with column collation when possible=False;Initial Catalog=[DBName]" .Open End With strSQL = "SELECT [definition] " & _ "FROM sys.sql_modules m " & _ "INNER JOIN sys.objects o ON m.object_id=o.object_id " & _ "WHERE [name] = '" & nm & _ "' AND [Type] = '" & Tp & "'" Set objMyRecordset.ActiveConnection = objMyConn objMyRecordset.Open strSQL Do While Not objMyRecordset.EOF retval = objMyRecordset.Fields("description").Value objMyRecordset.MoveNext Loop Set GetObject = retval End Function
你也可能会发现exec sp_helptext对此很有用,因为它将输出分成单独的行而不是一列,这可能使得在Excel中查看更容易。
exec sp_helptext "YourView/SP"
您可以通过检查sys.procedures
和sys.sql_modules
目录视图来从SQL Server获取存储过程的“代码”(T-SQL定义):
SELECT [pr].[name] , [pr].[object_id] , [pr].[type_desc] , [pr].[create_date] , [pr].[modify_date] , [m].[definition] , [m].[uses_ansi_nulls] , [m].[uses_quoted_identifier] , [m].[is_schema_bound] FROM sys.[procedures] pr INNER JOIN sys.[sql_modules] m ON [pr].[object_id] = [m].[object_id] WHERE pr.Name = 'whatever_stored_proc_name_you_want_to_analyze'
观点同样如此:
SELECT v.[name] , v.[object_id] , v.[type_desc] , v.[create_date] , v.[modify_date] , [m].[definition] , [m].[uses_ansi_nulls] , [m].[uses_quoted_identifier] , [m].[is_schema_bound] FROM sys.views v INNER JOIN sys.[sql_modules] m ON v.[object_id] = [m].[object_id] WHERE v.Name = 'whatever_view_you_want_to_analyze'
- 什么对象没有被正确设置或引用?
- Excel插入图片到单元格中心并设置移动和大小 – 单元格正在改变,它们不是固定的
- 3027“无法更新。 数据库或对象是只读的。“从excel中使用make table后
- Excel VBA将函数中的单元格合并
- 水晶报告错误在asp.net vb没有水晶报告需要
- 从Application.CommandBars 中删除CommandBarButtons不是从ThisAddIn_Shutdown事件上的所有打开的工作簿中删除它们
- 在本地信息不同的情况下,在VBA中使用Opentext
- Excel Basic VBA
- 使用apachePOI将Longtypes的值插入到Excel中