Sql server T-SQL:如果登录失败,则SQL

Sql server T-SQL:如果登录失败,则SQL,sql-server,tsql,linked-server,Sql Server,Tsql,Linked Server,目标:编写一条T-SQL语句,检查链接服务器数据库上的登录权限,然后根据登录结果更新列值 Sudo ish代码: @Source = linked server connection string while true if exists(select [Something] from [@Source]) update [Table] set [Column] = 1 else update [Table] set [Column] = 0 @Source = next linked s

目标:编写一条T-SQL语句,检查链接服务器数据库上的登录权限,然后根据登录结果更新列值

Sudo ish代码:

@Source = linked server connection string

while true

if exists(select [Something] from [@Source])
update [Table] set [Column] = 1
else
update [Table] set [Column] = 0

@Source = next linked server
-- perform connection to external server.

-- make update
update <table>
   SET <field to indicate result> = <result>
 WHERE <filter to select row>

这个想法是,如果我无法从表中获取记录,那么我就没有访问权限。当我使用实际的T-SQL执行此查询时,出现登录失败错误。是否有任何方法可以使用T-SQL完成此操作?目前,我手动检查并更新。

如果你问自己的方向是否正确,我会说不。以下是sudo ish代码:

@Source = linked server connection string

while true

if exists(select [Something] from [@Source])
update [Table] set [Column] = 1
else
update [Table] set [Column] = 0

@Source = next linked server
-- perform connection to external server.

-- make update
update <table>
   SET <field to indicate result> = <result>
 WHERE <filter to select row>
这是另一个提示。可能是

    SET <field> = CASE WHEN @login = 'OK' THEN 1 ELSE 0 END

如果你问自己的方向是否正确,我会说不。以下是sudo ish代码:

@Source = linked server connection string

while true

if exists(select [Something] from [@Source])
update [Table] set [Column] = 1
else
update [Table] set [Column] = 0

@Source = next linked server
-- perform connection to external server.

-- make update
update <table>
   SET <field to indicate result> = <result>
 WHERE <filter to select row>
这是另一个提示。可能是

    SET <field> = CASE WHEN @login = 'OK' THEN 1 ELSE 0 END

如果您使用的是链接服务器,如果您尝试选择但没有权限,则会出现错误。这不是一句话就能做到的。如果使用IFs,我假设您已经在使用存储过程

您可以使用为这种类型设计的函数,但仍然依赖于异常处理。你仍然需要像这样使用TRY/CATCH


如果您使用的是链接服务器,如果您尝试选择但没有权限,则会出现错误。这不是一句话就能做到的。如果使用IFs,我假设您已经在使用存储过程

您可以使用为这种类型设计的函数,但仍然依赖于异常处理。你仍然需要像这样使用TRY/CATCH


这是什么语言?连接字符串在TSQL中没有任何意义如果你问你的方向是否正确,答案是否定的-你不应该在sql中使用if语句。这是什么语言?连接字符串在TSQL中没有任何意义如果你问你的方向是否正确,答案是否定的-你不应该在sql中使用if语句。这与我的问题越来越接近了。。所以奇怪的是,我有登录服务器的能力,但我的权限在Db级别结束。因此,使用sp_testlinkedserver仍然可以获得成功的结果。元数据数据库在所有服务器上都具有相同的架构。我的目标是从每个链接服务器检索最后三个月的元数据,并将元数据放在服务器上的单个表中。我正在使用一个sp来实现这一点。在每个链接服务器之间循环时,如果遇到无法查询表的服务器,则整个sp将失败。因此,我希望创建一个语句,如果查询因权限问题而失败,它基本上会跳过链接服务器。完成此操作后,我使用光标在服务器列表中循环,测试连接,然后测试select语句。当可以进行恢复时,每个故障点都处于“尝试/捕获”状态,这样我就可以继续处理其余的服务器。这正接近我的要求。。所以奇怪的是,我有登录服务器的能力,但我的权限在Db级别结束。因此,使用sp_testlinkedserver仍然可以获得成功的结果。元数据数据库在所有服务器上都具有相同的架构。我的目标是从每个链接服务器检索最后三个月的元数据,并将元数据放在服务器上的单个表中。我正在使用一个sp来实现这一点。在每个链接服务器之间循环时,如果遇到无法查询表的服务器,则整个sp将失败。因此,我希望创建一个语句,如果查询因权限问题而失败,它基本上会跳过链接服务器。完成此操作后,我使用光标在服务器列表中循环,测试连接,然后测试select语句。当可以进行恢复时,每个故障点都处于尝试/捕获状态,这样我就可以继续处理其余的服务器。