Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从DTS对象导出SQL语句?_Sql_Sql Server_Dts - Fatal编程技术网

如何从DTS对象导出SQL语句?

如何从DTS对象导出SQL语句?,sql,sql-server,dts,Sql,Sql Server,Dts,我正在运行SQLServer2000,需要从所有DTS对象中导出SQL语句,以便在需要时对它们进行解析并将其放入wiki文档中 有办法吗 可能会将每个DTS对象转储到一个文本文件中,对象名作为文件名,进程名和提取日期作为文件头 谢谢。DTS包有一个带有对象模型的API。您可以通过此命令获取SQL文本。联机文档中的书籍在某种程度上描述了这一点,通过查看VB文件对对象模型的作用,您可以获得对象模型用法的示例。有一个API,其中包含用于DTS包的对象模型。您可以通过此命令获取SQL文本。联机文档上的书

我正在运行SQLServer2000,需要从所有DTS对象中导出SQL语句,以便在需要时对它们进行解析并将其放入wiki文档中

有办法吗

可能会将每个DTS对象转储到一个文本文件中,对象名作为文件名,进程名和提取日期作为文件头


谢谢。

DTS包有一个带有对象模型的API。您可以通过此命令获取SQL文本。联机文档中的书籍在某种程度上描述了这一点,通过查看VB文件对对象模型的作用,您可以获得对象模型用法的示例。

有一个API,其中包含用于DTS包的对象模型。您可以通过此命令获取SQL文本。联机文档上的书籍在某种程度上描述了这一点,通过查看VB文件对对象模型的作用,您可以获得对象模型使用的示例。

如果您想节省一些工作,并且不介意支付几美元,则有一个完整的文档记录您的DTS包。它还输出到XML,因此获取这些SQL语句应该相对容易。

如果您想节省一些工作,并且不介意支付一些费用,那么有一个完整的DTS包文档。它也输出为XML,因此获取这些SQL语句应该相对容易。

我有一个脚本,可以轻松移植到Python 2.5,它将任务中的SQL转储到DTS包中,该包已保存为Visual Basic代码

请参阅ConcernedOfTunbridgeWells的帖子,了解如何将DTS包保存到VB文件。保存VB文件后,对其运行此函数。它将在包含包中代码的VB文件所在的位置创建一个文件夹,并转储找到的SQL代码。它假定SQL的输出进入CSV文件(请参见outExt参数)或来自执行SQL任务,并在输出文件或SQL任务之后命名SQL查询。如果您的包不做任何其他事情,这是一个有用的解决方案

如果你愿意的话,请随意清理一下这段代码

from _future _;使用_语句导入2.5版需要此功能。 导入操作系统,重新 def dump_sqlinfle,outExt=r'csv': 解析另存为.bas文件的DTS包,并转储SQL代码。 取出每个任务的SQL代码和文件名。这个过程 取决于DTS将包保存为VB模块的方式。 关键字参数: infle-定义DTS包的.bas文件。 outExt—由导出的文件的扩展名,不带句点 DTS包中的数据泵。这些用于重命名 提取的SQL脚本。如果提取文件不使用此 扩展名,则使用提取文件的全名 命名SQL脚本。默认值:csv 该函数将在包含的同一文件夹中生成一个文件夹 .bas文件。它的名称如下:如果.bas文件是DTS package.bas, 然后该目录将命名为DTS package_SQL。SQL脚本是 存储在此文件夹中。 在这里声明脚本中使用的所有RE。 basExtRE=re.compiler'\.bas$',re.IGNORECASE outExtRE=re.compiler'\.+outExt+r'$',re.IGNORECASE startTaskRE=re.compiler'Set oCustomTask\d+=oTask.CustomTask' startSqlRE=re.compile r'oCustomTask\d+\.?:源?SQLStatement=.*&vbCrLf?' nextSqlRE=re.compile r'oCustomTask\d+\.?:源?SQLStatement=oCustomTask\1\.' r'?:源?SQLStatement&.*&vbCrLf?' filenameRE=re.compile r'oCustomTask\d+\.DestinationObjectName=.* descrippre=re.compiler'oCustomTask\d+\.Description=.* invalidCharsRE=re.compiler'[][+/*?,.;:=\\\\\\] 读文件 使用openinfile,“r”作为f: 生成SQL脚本的目录。 outfolder='%s_SQL\\'%basExtRE.sub,infle 如果不是os.path.existsoutfolder: os.makedirsoutfolder taskNum=-1 输出文件= sql=[] 对于f中的行: line=line.rstrip.lstrip 如果taskNum==-1: 寻找一项任务的开始。 m=startTaskRE.matchline 如果m不是无: taskNum=intm.group1 elif行==和输出文件!=: 将SQL代码保存到文件中。 如果是sql: 如果os.path.existsoutfile: 取消链接文件 使用openoutfile,“w”作为fw: fw.writelines[%s%sqlQ用于sql中的sqlQ] 打印%2d-%s%taskNum,输出文件 其他: 打印%2d>无SQL%s% taskNum,os.path.basenameoutfile sql=[] 输出文件= taskNum=-1 其他: 获取SQL代码和文件名 m=startSqlRE.matchline 如果m: 开始组装SQL查询。 tnum,sqlQ,lf=m组 assert inttnum==taskNum sql=[sqlQ.replace',' +“\n”如果lf不是其他人] 持续 m=nextSqlRE.matchline 如果m: 继续组装SQL查询 tnum,sqlQ,lf=m组 assert inttnum==taskNum sql.appendsqlQ.replace“”,“” +“\n”如果lf不是其他 持续 m=描述前匹配线 如果m: 从任务的 描述这总是出现在屏幕顶部附近 任务的定义。 tnum,outfile=m组 assert inttnum==taskNum 输出文件=无效字符子文件“uu2”,输出文件 outfile=%s%s.sql%outfolder,outfile 持续 m=filenameRE.matchline 如果m: 从任务的输出中获取SQL输出文件名 文件名。这总是出现在屏幕底部附近 任务的定义,因此如果 一个是早些时候发现的。 tnum,outfile=m组 assert inttnum==taskNum outfile=os.path.basenameoutfile outfile=outExtRE.sub,outfile outfile=%s%s.sql%outfolder,outfile 持续 打印“完成” 我有一个易于移植到Python2.5的脚本,该脚本将任务中的SQL转储到DTS包中,该包已保存为Visual Basic代码

请参阅ConcernedOfTunbridgeWells的帖子,了解如何将DTS包保存到VB文件。保存VB文件后,对其运行此函数。它将在包含包中代码的VB文件所在的位置创建一个文件夹,并转储找到的SQL代码。它假定SQL的输出进入CSV文件(请参见outExt参数)或来自执行SQL任务,并在输出文件或SQL任务之后命名SQL查询。如果您的包不做任何其他事情,这是一个有用的解决方案

如果你愿意的话,请随意清理一下这段代码

from _future _;使用_语句导入2.5版需要此功能。 导入操作系统,重新 def dump_sqlinfle,outExt=r'csv': 解析另存为.bas文件的DTS包,并转储SQL代码。 取出每个任务的SQL代码和文件名。这个过程 取决于DTS将包保存为VB模块的方式。 关键字参数: infle-定义DTS包的.bas文件。 outExt—由导出的文件的扩展名,不带句点 DTS包中的数据泵。这些用于重命名 提取的SQL脚本。如果提取文件不使用此 扩展名,则使用提取文件的全名 命名SQL脚本。默认值:csv 该函数将在包含的同一文件夹中生成一个文件夹 .bas文件。它的名称如下:如果.bas文件是DTS package.bas, 然后该目录将命名为DTS package_SQL。SQL脚本是 存储在此文件夹中。 在这里声明脚本中使用的所有RE。 basExtRE=re.compiler'\.bas$',re.IGNORECASE outExtRE=re.compiler'\.+outExt+r'$',re.IGNORECASE startTaskRE=re.compiler'Set oCustomTask\d+=oTask.CustomTask' startSqlRE=re.compile r'oCustomTask\d+\.?:源?SQLStatement=.*&vbCrLf?' nextSqlRE=re.compile r'oCustomTask\d+\.?:源?SQLStatement=oCustomTask\1\.' r'?:源?SQLStatement&.*&vbCrLf?' filenameRE=re.compile r'oCustomTask\d+\.DestinationObjectName=.* descrippre=re.compiler'oCustomTask\d+\.Description=.* invalidCharsRE=re.compiler'[][+/*?,.;:=\\\\\\] 读文件 使用openinfile,“r”作为f: 生成SQL脚本的目录。 outfolder='%s_SQL\\'%basExtRE.sub,infle 如果不是os.path.existsoutfolder: os.makedirsoutfolder taskNum=-1 输出文件= sql=[] 对于f中的行: line=line.rstrip.lstrip 如果taskNum==-1: 寻找一项任务的开始。 m=startTaskRE.matchline 如果m不是无: taskNum=intm.group1 elif行==和输出文件!=: 将SQL代码保存到文件中。 如果是sql: 如果os.path.existsoutfile: 取消链接文件 使用openoutfile,“w”作为fw: fw.writelines[%s%sqlQ用于sql中的sqlQ] 打印%2d-%s%taskNum,输出文件 其他: 打印%2d>无SQL%s% taskNum,os.path.basenameoutfile sql=[] 输出文件= taskNum=-1 其他: 获取SQL代码和文件名 m=startSqlRE.matchline 如果m: 开始组装SQL查询。 tnum,sqlQ,lf=m组 assert inttnum==taskNum sql=[sqlQ.replace',' +“\n”如果lf不是其他人] 持续 m=nextSqlRE.matchline 如果m: 继续组装SQL查询 tnum,sqlQ,lf=m组 assert inttnum==taskNum sql.appendsqlQ.replace“”,“” +“\n”如果lf不是其他 持续 m=描述前匹配线 如果m: 从任务的 描述这总是出现在屏幕顶部附近 任务的定义。 tnum,outfile=m组 assert inttnum==taskNum 输出文件=无效字符子文件“uu2”,输出文件 outfile=%s%s.sql%outfolder,outfile 持续 m=filenameRE.matchline 如果m: 从任务的输出中获取SQL输出文件名 文件名。这总是出现在屏幕底部附近 任务的定义,因此如果 一个是早些时候发现的。 tnum,outfile=m组 assert inttnum==taskNum outfile=os.path.basenameoutfile outfile=outExtRE.sub,outfile outfile=%s%s.sql%outfolder,outfile 持续 打印“完成”
当然是一个合理的价格…太糟糕了,他们的市场随着2008年的结束而迅速萎缩。当然是一个合理的价格…太糟糕了,他们的市场随着2008年的结束而迅速萎缩。