好贷网好贷款

有没有指代一个数据库的同义词? 100sz_haitao]

发布时间:2016-12-5 16:41:15 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"有没有指代一个数据库的同义词? 100sz_haitao]",主要涉及到有没有指代一个数据库的同义词? 100sz_haitao]方面的内容,对于有没有指代一个数据库的同义词? 100sz_haitao]感兴趣的同学可以参考一下。

sql2005开始有“同义词”指代一个表、视图了,但是它必须明确到最具体的对象 如果想指代一个库,能不能做到呢? 比如,指明curdb指代xxx_2013,那么,所有使用“xxx_2013.dbo.任何表或视图”的地方,都可以写为“curdb.dbo.任何表或视图” 这有什么好处呢? 如果明年了,本来n个使用到xxx_2013的地方,都要逐一改为xxx_2014了 现在只需要改一个地方,让curdb指代xxx_2014,具体使用的n个地方都无须修改了! (有些系统是每年建一个库的,如用友) 如果没有数据库的同义词,而使用现有的同义词,相当于需要 为每个表或视图都分别建立同义词了,显然麻烦很多

看了一下联机丛书,同义词只到架构级别,导不了数据库级别。或者你的库命名可以使用一定的“规则”来实现咯,比如xxx+'当年日期'

是别人的系统(如用友) 库名也已经有一定规则了,如xxx_2013 但是,其它关联用友的系统,有很多xxx_2013.dbo.表这样的关联查询sql、视图、存储过程 每年都需要把这些sql、视图、存储过程都替换一次,容易遗漏且麻烦 如果有一个curdb,就只需改一个地方了

可不可以用linkedserver

引用 3 楼 zoffor 的回复:可不可以用linkedserver 链接服务器只能指定到 服务器,不能具体到库。。。。 同义词又太具体了,必须具体到表、视图等最终对象

你可以批量改脚本,然后一次执行就可以了,使用sys.sql_modules查找定义,然后替换数据库名称。

硬盘目录都有link链接了,数据库还没有。。。。 刚刚想把一个系统的数据移到新的服务器,因为它的数据量增长的比较快,可能影响访问 同服务器不同库 的其他系统速度 如果有数据库的link,只要修改这个link,使用到它里面的所有对象的sql,一点都不用改了 这个应该比多机写的机制要简单多了,不知道微软有没有考虑新版本增加这个功能

使用链接服务器就可以,引用technet文档的说明这样: 例如,名为 Server1 的服务器上有 AdventureWorks2008R2 示例数据库的 Employee 表。若要从另一服务器 Server2 引用此表,则客户端应用程序必须使用由四个部分构成的名称 Server1.AdventureWorks.HumanResources.Employee。另外,如果更改表的位置(例如,更改为另一服务器),则必须修改客户端应用程序以反映此更改。 若要解决这两个问题,您可以在 Server2 上为 Server1 上的 Employee 表创建一个同义词 EmpTable。这样,客户端应用程序只需使用由一个部分构成的名称 EmpTable 来引用 Employee 表。另外,如果 Employee 表的位置发生变化,则必须修改同义词 EmpTable 以指向 Employee 表的新位置。由于不存在 ALTER SYNONYM 语句,因此必须首先删除同义词 EmpTable,然后重新创建同名的同义词,但是要将同义词指向Employee 的新位置。 http://technet.microsoft.com/zh-cn/library/ms187552(v=sql.105).aspx

链接服务器是到机器,没到数据库

该回复于2013-01-28 13:57:19被管理员删除

sql、视图、存储过程全部统一到存储过程 然后存储过程用动态写法(根据哭的命名规则动态找出库和表),可以作到只修改一次

引用 10 楼 Haiwer 的回复:sql、视图、存储过程全部统一到存储过程 然后存储过程用动态写法(根据哭的命名规则动态找出库和表),可以作到只修改一次 这个改动工程就大了。。。。 看来mssql的确是不支持了 按理说,这种“上级的别名”应该是很容易想到的 pascal就有:with xxx do a:=1; 即xxx.a:=1; 不知道mssq什么时候能想到、加入

上一篇:XML转行集难题 40xxyj6450]
下一篇:SQL Server 简单模式下,误删除堆表记录进行数据恢复(技术贴) 100zc10151]

相关文章

相关评论