N'[未分类(本地)] 是什么意思?

Jam*_*ins 2 sql-server sql-server-agent

在这里(和其他地方)的几个问答代码片段中可以看到以下代码,我正在尝试翻译部分N'[Uncategorized (Local)]

    EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', 
       @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
Run Code Online (Sandbox Code Playgroud)

例子

我看过 Microsoft EXECUTE (Transact-SQL)

'姓名'

是有效的用户名或登录名。name 必须是 sysadmin 固定服务器角色的成员,或者分别作为 sys.database_principals 或 sys.server_principals 中的主体存在。name 不能是内置帐户,例如 NT AUTHORITY\LocalService、NT AUTHORITY\NetworkService 或 NT AUTHORITY\LocalSystem。

[N] 'command_string'

是一个常量字符串,其中包含要传递到链接服务器的命令。如果包含 N,则字符串被解释为 nvarchar 数据类型。

我猜N'[Uncategorized (Local)] 部分会获取系统管理员的名称并将其传递给系统管理员以执行作业,但我没有找到一个很好的参考资料来表明所有三个部分是如何协同工作的.

Tom*_*m V 8

@name 参数是msdb.dbo.sp_add_category和 not的参数EXEC

请参阅sp_add_category文档:

[ @name = ] '姓名'

要添加的类别的名称。该名称在指定的类中必须是唯一的。name 是 sysname,没有默认值。

[Uncategorized (Local)]当您未在 SQL 代理作业上指定类别时,仅指示默认类别。前导N仅表示字符串 isnvarchar和 not varchar

请通读组织工作以了解有关工作类别的更多信息

您正在查看的代码很可能只是一个脚本化的工作。例如,当我右键单击正在查看的 SQL Server 上的随机作业时script job as > create > new query editor window,结果如下:

IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)
EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'Warmup_SSRS_EP', 
        @enabled=1, 
        @notify_level_eventlog=0, 
        @notify_level_email=3, 
        @notify_level_netsend=0, 
        @notify_level_page=0, 
        @delete_level=0, 
        @description=N'Warmup_SSRS_EP', 
        @category_name=N'[Uncategorized (Local)]', 
        @owner_login_name=N'domain\user', 
        @notify_email_operator_name=N'monitor operator', @job_id = @jobId OUTPUT
Run Code Online (Sandbox Code Playgroud)

其中类别的创建只是包含在脚本中以确保它存在,否则以下过程会出错。