如何将所有用户定义的函数保存到本地硬盘驱动器上的 txt 文件中?

Jua*_*lez 5 sql-server-2008 sql-server backup functions

我正在运行 SQL Server 2008 并且需要备份我创建的 UDF 脚本/查询。如何才能及时做到这一点?我尝试右键单击保存 UDF 的文件夹图标(表值函数)以复制文件夹,但不能打包到。

我唯一能想到的就是在我的 UDF 脚本上使用 MODIFY 命令,然后复制并粘贴到单独的文本文件中。

即使只有一种简单的方法可以将所有脚本保存在一个文本文件中而不是单独的 txt 文件中,我也很乐意这样做,而不必一次复制和粘贴每个文件。

有什么建议?

Tho*_*ger 8

我能想到的最简单的方法如下:

  1. 右键单击您的数据库 -> 任务 -> 生成脚本...
  2. 选择特定的数据库对象
  3. 选择复选框用户定义的函数
  4. 保存到文件,然后随意命名您的文本文件

这将为您的 UDF 生成脚本并将其保存到您想要的文件中。您可以使用 PowerShell(在我的脑海中)为每个 UDF 生成脚本并将它们保存到单独的文本文件(每个 UDF 一个文本文件)。

编辑:下面是一些 PowerShell 来做你想做的事情。该脚本将获取数据库中的所有用户定义函数(将变量设置为适当的环境)并将它们中的每一个的定义写入它们自己的文件,并以函数的名称命名该文件。

$serverName = "YourServerName"          # example: "YourServer" or "YourServer\YourNamedInstance"
$databaseName = "YourDatabaseName"
$outputDirectory = "C:\Dir1\YourUDFs"   # the dir you want these files saved in

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null

$server = New-Object Microsoft.SqlServer.Management.Smo.Server($serverName)
$database = $server.Databases.Item($databaseName)
$udfCol = $database.UserDefinedFunctions | Where-Object {$_.Schema -ne "sys"}
foreach ($udf in $udfCol) {
    $udfName = $udf.Name
    ($udf.TextHeader + $udf.TextBody) | 
        Out-File -FilePath $outputDirectory\$udfName".txt"
}
Run Code Online (Sandbox Code Playgroud)


Aar*_*and 6

方法一

在对象资源管理器中,展开 [server] => [database] => Programmability => Functions 并突出显示适当的 [function type](例如标量值函数)。

现在打开对象资源管理器详细信息 (F7)。

在右侧窗格中,选择所有函数,然后右键单击,Script Function As => CREATE To => File。

我认为您不能一次对所有函数类型使用此方法。


方法二

这是一个多一点的手册,但您可以将元数据放入您自己的脚本中,并使用这样的查询来处理所有函数(确保将结果用于文本):

SET NOCOUNT ON;

SELECT m.definition + 'GO'
  FROM sys.sql_modules AS m
  INNER JOIN sys.objects AS o
  ON m.[object_id] = o.[object_id]
  WHERE o.type IN ('FN', 'IF', 'TF');
Run Code Online (Sandbox Code Playgroud)

如果您有很多功能,如果您从一个与 SSMS 没有相同显示限制的应用程序中使用它,这会更好地工作。


方法三

查看 SMO、PowerShell 等。


bil*_*nkc 4

SSMS(通过 SMO)允许您在类别(功能)级别编写脚本。它不允许您仅指定表值函数。

在此输入图像描述

在此输入图像描述

在此输入图像描述

您还可以查看类似这篇文章,了解如何使用 PS 来自动创建。您也许能够过滤按函数类型(tvf、标量等)编写脚本的对象