zoukankan      html  css  js  c++  java
  • sql 2005 同义词

    --> Title  : SQL Server2005 Synonym的使用

    --> Author : wufeng4552

    --> Date   : 2009-10-30

    1.Synonym的概念 
       Synonym(同义词)是SQL Server 2005的新特性。可以简单的理解Synonym为其他對象的别名。

    語法

    CREATE SYNONYM [ schema_name_1. ] synonym_name FOR < object >

    < object > :: =

    {

        [ server_name.[ database_name ] . [ schema_name_2 ].| database_name . [ schema_name_2 ].| schema_name_2. ]object_name

    }

    在建立同義字時,基底物件不需要存在。在執行階段,SQL Server 會檢查基底物件是否存在。

    各參數涵義如下:

    schema_name_1 :指定建立同義字的結構描述。如果未指定 schema,SQL Server 2005 會使用目前使用者的預設結構描述。

    synonym_name :這是新同義字的名稱。

    server_name :這是基底物件所在的伺服器名稱。

    database_name :這是基底物件所在的資料庫名稱。如果未指定 database_name,就會使用目前資料庫的名稱。

    schema_name_2 :這是基底物件的結構描述名稱。如果未指定 schema_name,就會使用目前使用者的預設結構描述。

    object_name :這是同義字參考的基底物件名稱。

    注:

    若要使用给定架构创建同义词,用户必须满足以下条件:

    (1)拥有此架构或具有 ALTER SCHEMA 权限以

    (2)具有 CREATE SYNONYM 权限。

    (3)是 db_owner 的成员。

    (4)是 db_ddladmin 固定数据库角色的成员

    可以为下列对象类型创建同义词:
    程序集 (CLR) 存储过程; 程序集 (CLR) 表值函数
    程序集 (CLR) 标量函数; 程序集聚合 (CLR) 聚合函数
    复制筛选过程; 扩展存储过程
    SQL 标量函数;SQL 表值函数SQL 内联表值函数;
    SQL 存储过程视图; 表(用户定义)
    2.Synonym的实际应用

    在你的程序发布的时候,你突然发现你需要更改某个表名,或字段名。而你的程序已经不可能修改。这时,怎么办呢?那就创建Synonym吧。当然,在sql2000时代,你可以使用view来做这个事情,或sprocs或udf等。但Synonym有其它所不能的功能,那就是跨数据库,跨服务器。

    ----------------------------------------------------------------------------

    --Synonym在同一服务器上的不同数据库

    use db_study

    go

    if object_id('MyCustomers')is not null drop synonym MyCustomers

    go

    --為表建立別名

    Create Synonym MyCustomers For Northwind.dbo.Customers

    --查詢

    go

    select * from mycustomers

    --切換數據庫

    use Northwind

    go

    --建立函數

    if object_id('synonym_UF')is not null drop function synonym_UF

    go

    create function synonym_UF()

    returns table

    as

     return(select * from Customers)

    go

    ----為函數建立別名

    use db_study

    go

    if object_id('synonym_uf')is not null drop synonym synonym_uf

    go

    create synonym synonym_uf for Northwind.dbo.synonym_UF

    go

    --調用函數

    select * from synonym_uf()

    --建立存儲過程

    if object_id('synonym_PRO')is not null drop proc synonym_PRO

    go

    create proc synonym_PRO

    as

     select * from Customers

    go

    ----為存儲建立別名

    use db_study

    go

    if object_id('synonym_PRO')is not null drop synonym synonym_PRO

    go

    create synonym synonym_PRO for Northwind.dbo.synonym_PRO

    go

    --執行存儲過程

    exec synonym_PRO

    --同樣支持動態

    if object_id('MyCustomers')is not null drop synonym MyCustomers

    go

    --為表建立別名

    exec('Create Synonym MyCustomers For Northwind.dbo.Customers')

    --查詢

    go

    select * from mycustomers

    ----------------------------------------------------------------------------

    ---Synonym在不同服务器上的不同数据库

    --先建立鏈結服務器

    --创建链接服务器

    exec sp_dropserver  'ITSV', 'droplogins'

    exec sp_addlinkedserver   'ITSV', ' ', 'SQLOLEDB', '192.168.12.***/wip'

    exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, 'sa', 'sun*****%'

    go

    Create Synonym MyCustomers For ITSV.Northiwind.dbo.Customers

    go

    Select * from MyCustomers

  • 相关阅读:
    Ajax
    通过浏览器渲染过程来进行前端优化
    渲染树结构、布局和绘制
    JS 和 CSS 的位置对其他资源加载顺序的影响
    Linq中dbSet 的查询
    如何在windows“我的电脑”中添加快捷文件夹
    SQL Server中2008及以上 ldf 文件过大的解决方法
    出现“初始化数据库时发生异常”解决办法
    MVC使用ajax取得JSon数据
    asp.net mvc 使用Ajax调用Action 返回数据【转】
  • 原文地址:https://www.cnblogs.com/wcLT/p/3783844.html
Copyright © 2011-2022 走看看