楼主: Cherish_j_wang

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

[复制链接]
论坛徽章:
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
111#
 楼主| 发表于 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
112#
发表于 2012-8-19 14:52 | 只看该作者
感谢楼主分析!!!

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

回复
论坛徽章:
0
116#
发表于 2012-8-29 11:21 | 只看该作者
楼主辛苦了,收藏了
很有用

使用道具 举报

回复
论坛徽章:
8
双黄蛋
日期:2011-08-11 14:51:29蜘蛛蛋
日期:2011-08-15 20:53:08灰彻蛋
日期:2011-08-23 17:46:31ITPUB十周年纪念徽章
日期:2011-11-01 16:26:292012新春纪念徽章
日期:2012-01-04 11:57:56咸鸭蛋
日期:2012-01-09 11:14:00紫蛋头
日期:2012-03-20 17:08:01优秀写手
日期:2013-12-18 09:29:14
117#
发表于 2012-9-11 17:58 | 只看该作者
好帖,已收藏。

使用道具 举报

回复
论坛徽章:
0
118#
发表于 2012-9-12 11:09 | 只看该作者
实践出真知啊,这绝对是好东西。。狠狠地顶下LZ

使用道具 举报

回复
招聘 : 数据库开发
论坛徽章:
3
奥运会纪念徽章:网球
日期:2012-06-25 14:58:22慢羊羊
日期:2015-03-04 14:53:332015年新春福章
日期:2015-03-06 11:58:39
119#
发表于 2012-9-21 09:39 | 只看该作者
Cherish_j_wang 发表于 2012-3-8 21:47
MSSQL DBA 常用脚本总结之更新所有数据库的用户表统计信息背景
DBA在工作中经常会遇到下面的需求:
Actio ...

真强啊,不过我的机子不行,执行的没反应了,唉,该升级硬件了

使用道具 举报

回复
论坛徽章:
1
2013年新春福章
日期:2013-02-25 14:51:24
120#
发表于 2013-2-19 09:52 | 只看该作者
好久没登陆,楼主不继续?

使用道具 举报

回复

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

本版积分规则 发表回复

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