使用链接服务器时,触发器定义为NULL

时间:2017-07-18 12:14:27

标签: sql sql-server triggers linked-server

以下是我面临的问题: -

  1. 当我在ServerA上运行时,我得到输出

        SELECT      tbl.Name, tr.name, c.Text
        FROM      sys.sysobjects tr
              Inner Join sys.sysobjects tbl On tr.parent_obj = tbl.id
              Inner Join sys.syscomments c On tr.id = c.id
        WHERE      tr.xtype = 'TR' And tbl.xtype = 'U'
    
  2. 当我从服务器B运行相同的查询并将服务器A作为链接服务器引用时出现问题,我没有输出。

        SELECT tbl.Name, tr.name, c.Text 
        FROM LinkedServerA.Database.sys.sysobjects tr
        Inner Join LinkedServerA.Database.sys.sysobjects tbl On tr.parent_obj = tbl.id
        Inner Join LinkedServerA.Database.sys.syscomments c On tr.id = c.id
        WHERE tr.xtype = 'TR' And tbl.xtype = 'U'
    
  3. 即使我运行以下内容,我也会得到NULL:

    从LinkedServerA.Database.sys.syscomments

  4. 中选择文本

    非常感谢任何见解!

1 个答案:

答案 0 :(得分:0)

这意味着您的登录使用其他登录信息映射到链接服务器,因此您无权使用链接服务器登录查看元数据。

您可以使用以下代码检查您的登录以及链接服务器上的数据库用户/角色:

class MessageController extends BaseController {
  public function composeAction() {

    if (!class_exists('S3')) require_once 'S3.php';

    // AWS access info
    if (!defined('awsAccessKey')) define('awsAccessKey', 'XXXXXXXXXX');
    if (!defined('awsSecretKey')) define('awsSecretKey', 'XXXXXXXXXX');

    // Instantiate the class
    $awsS3 = new S3(awsAccessKey, awsSecretKey);

    echo print_r($awsS3 ->listBuckets(), 1)."\n";

    /****
    *  Continue...
    *
    ****/
   }
}