• 用SQL脚本移除视图中存在的机器名


    用SQL脚本移除视图中存在的机器名

    例子: msccdr.cdr.DimRMAReturnMethod

    CREATE VIEW CDR.DimRMAReturnMethod ( ReturnMethodId,srcReturnMethodCode,ReturnMethodName,IsDeleted  ,TrackingID,ETLInsertDtTm ,ETLUpdateDtTm)

    AS SELECT t.ReturnMethodId,t.srcReturnMethodCode,t.ReturnMethodName,t.IsDeleted,t.TrackingID,t.ETLInsertDtTm,t.ETLUpdateDtTm

    FROM [MSCBISQLX01].[CDR].dbo.DimRMAReturnMethod t WITH (NOLOCK)

    处理方法

    *.查询出视图中存在机器名的视图信息

    USE Database

    GO

    SELECT

    b.name,

    c.referenced_server_name,

    c.referenced_database_name,

    c.referenced_schema_name,

    a.definition,

    b.create_date,

    b.modify_date

    FROM sys.sql_modules AS a

    JOIN

    sys.objects AS b

    ON a.object_id = b.object_id

    JOIN

    sys.sql_expression_dependencies AS c

    ON b.object_id = c.referencing_id

    WHERE b.type = 'V'

    AND c.referenced_server_name IS NOT NULL

     

    *.修改视图中存在机器名的视图

     SET NOCOUNT ON;

    DECLARE @definition VARCHAR(MAX)

    DECLARE @ServerN VARCHAR(50)

    DECLARE View_Cursor CURSOR SCROLL

    FOR (

    SELECT

    c.referenced_server_name,

    a.definition

    FROM sys.sql_modules AS a

    JOIN

    sys.objects AS b

    ON a.object_id = b.object_id

    JOIN

    sys.sql_expression_dependencies AS c

    ON b.object_id = c.referencing_id

    WHERE b.type = 'V'

    AND c.referenced_server_name IS NOT NULL

    )

    OPEN View_Cursor;

    FETCH NEXT FROM View_Cursor INTO @ServerN,@definition;

    WHILE @@fetch_status = 0

    BEGIN

    SELECT @definition = REPLACE (@definition,'CREATE VIEW','ALTER VIEW')

    SELECT @definition = REPLACE (@definition,'['+@ServerN+']'+'.','')

    --print(@definition);

    exec(@definition);

    FETCH NEXT FROM View_Cursor INTO @ServerN,@definition;

    END

    CLOSE View_Cursor;

    DEALLOCATE View_Cursor;

    GO

     

     以上处理方法仅供参考,如有处理不完善的地方;请大家指出共同学习。

     

    机会是凭自己争取的,命运是靠自己把握的,生命是自己的画,为何要依靠别人着色?!
  • 相关阅读:
    SQL易错总结1
    线程池使用总结
    多线程的上下文切换
    SQL 排序按指定内容优先排序
    System x 服务器制作ServerGuide U盘安装Windows Server 2008 操作系统 --不格式化盘
    错误“该伙伴事务管理器已经禁止了它对远程/网络事务的支持”解决方案
    sql server 2012 链接服务器不能链接sql server 2000的解决方案 ,
    sqlserver2005版本的mdf文件,还没有log文件,
    BCP SQL导出EXCEL常见问题及解决方法;数据导出存储过程
    Nginx
  • 原文地址:https://www.cnblogs.com/GeorgeYao/p/4042277.html
Copyright © 2020-2023  润新知