楼主: Cherish_j_wang

[精华] MSSQL DBA 精华总结[处理对象名称中特殊字符]

[复制链接]
论坛徽章:
1
2013年新春福章
日期:2013-02-25 14:51:24
111#
发表于 2012-7-8 23:09 | 只看该作者
帖子沉下去了。

使用道具 举报

回复
论坛徽章:
4
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:442009新春纪念徽章
日期:2009-01-04 14:52:282014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02
112#
发表于 2012-8-9 09:26 | 只看该作者
顶,不错。

使用道具 举报

回复
论坛徽章:
0
113#
发表于 2012-8-10 18:43 | 只看该作者
非常感谢!!!!

使用道具 举报

回复
论坛徽章:
0
114#
发表于 2012-8-10 18:45 | 只看该作者
非常感谢!!!!

使用道具 举报

回复
论坛徽章:
0
115#
发表于 2012-8-10 18:45 | 只看该作者
非常感谢!!!!

使用道具 举报

回复
论坛徽章:
14
迷宫蛋
日期:2012-03-13 09:50:292014年新春福章
日期:2014-02-18 16:44:08优秀写手
日期:2013-12-18 09:29:15迷宫蛋
日期:2012-06-13 15:28:34咸鸭蛋
日期:2012-06-11 16:11:11灰彻蛋
日期:2012-05-31 10:18:54双黄蛋
日期:2012-05-28 17:45:17茶鸡蛋
日期:2012-05-28 17:27:32蜘蛛蛋
日期:2012-05-28 16:54:09迷宫蛋
日期:2012-05-17 19:00:48
116#
 楼主| 发表于 2012-8-16 22:09 | 只看该作者
本帖最后由 Cherish_j_wang 于 2012-8-16 22:11 编辑

MSSQL DBA 常用脚本总结

处理对象名称中特殊字符
场景

前两天被同事问到一个问题:如果我的索引名称中不小心使用了特殊字符(我们暂且叫不规则命名方式),比如:[],那么如何将这个特殊字符去掉,变成“规则”的命名方式呢?
脚本
测试脚本如下:

  1. use test
  2. go

  3. if OBJECT_ID('dbo.tb_test_naming_objects','U') is not null
  4.         drop table dbo.tb_test_naming_objects
  5. GO
  6. create table dbo.tb_test_naming_objects
  7. (
  8.         id int identity(1,1) not null
  9.         ,rowid uniqueidentifier not null
  10.         ,constraint PK_tb_test_naming_objects primary key
  11.         (
  12.                 id
  13.         )
  14. );

  15. create index ix_rowid
  16. ON dbo.tb_test_naming_objects(rowid);
  17. GO

  18. --change index name to unusual object naming
  19. exec sys.sp_rename 'dbo.tb_test_naming_objects.ix_rowid','[ix_tb_test_naming_objects_rowid]','index'
  20. ;

  21. --double checking index name
  22. select
  23.                 OBJECT_NAME = OBJECT_NAME(object_id)
  24.                 ,index_name = name
  25. from sys.indexes
  26. where object_id = object_id('dbo.tb_test_naming_objects','U');

  27. --how to change index name from [ix_tb_test_naming_objects_rowid](naming unusually) to ix_tb_test_naming_objects_rowid(naming usually)
  28. exec sys.sp_rename 'dbo.tb_test_naming_objects.[[ix_tb_test_naming_objects_rowid]]]','ix_tb_test_naming_objects_rowid','index';

  29. --double checking index name again
  30. select
  31.                 OBJECT_NAME = OBJECT_NAME(object_id)
  32.                 ,index_name = name
  33. from sys.indexes
  34. where object_id = object_id('dbo.tb_test_naming_objects','U');
复制代码
说明:
这个问题得解决方法在代码的第33行。
延伸
在MSSQL Server中,使用[]]作为转义字符,也就是说,在[]]之前的字符将保持原样。比如:创建表dbo.[tb_]]],那么表的名称则为:tb_]。


使用道具 举报

回复
论坛徽章:
6
授权会员
日期:2006-07-24 17:13:31生肖徽章2007版:鸡
日期:2008-01-02 17:35:532008新春纪念徽章
日期:2008-02-13 12:43:032010新春纪念徽章
日期:2010-03-01 11:04:552012新春纪念徽章
日期:2012-01-04 11:50:442013年新春福章
日期:2013-02-25 14:51:24
117#
发表于 2012-8-19 14:52 | 只看该作者
感谢楼主分析!!!

使用道具 举报

回复
论坛徽章:
0
118#
发表于 2012-8-21 21:09 | 只看该作者
学习了。。。。

使用道具 举报

回复
论坛徽章:
0
119#
发表于 2012-8-22 16:49 | 只看该作者
有些启发,收藏。

使用道具 举报

回复
论坛徽章:
0
120#
发表于 2012-8-24 22:42 | 只看该作者
很好的技术,支持一下

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表