zoukankan      html  css  js  c++  java
  • 用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

     

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

     

    机会是凭自己争取的,命运是靠自己把握的,生命是自己的画,为何要依靠别人着色?!
  • 相关阅读:
    阿里云重磅发布DMS数据库实验室 免费体验数据库引擎
    阿里云移动端播放器高级功能---直播时移
    图解SQL的inner join、left join、right join、full outer join、union、union all的区别
    索引覆盖分析
    case when 性能优化
    Eclipse断点种类
    Eclipse高效率开发技巧
    VS Code编辑器
    正则表达式
    JDBC编程之预编译SQL与防注入式攻击以及PreparedStatement的使用教程
  • 原文地址:https://www.cnblogs.com/GeorgeYao/p/4042277.html
Copyright © 2011-2022 走看看