【活躍論壇氣氛】之數據庫

金卯刀 2010-03-02 11:50:33
加精
先發一些我平時遇到的問題和筆記,希望能對各位有幫助。先發3個條目,太長了也不好,看效果如何?或者有什么建議,可以提出來,后續就可采納。錯誤之處,請見諒并指正。謝謝!

1、一些常見的SQL效能調整

2、由存儲過程(StoredProcedure)引發的 "无法解决 equal to 操作的排序规则冲突。"
StoredProcedure中使用了暫存#TempTable
Ex:
Create Table #TempTable
(Field01 varchar(10),
Field02 varchar(20))

以上在繁體SQLServer中Field1 & Field2預設的COLLATE為Chinese_Taiwan_Stroke_CI_AS

在簡體SQLServer中Field1 & Field2預設的COLLATE則為Chinese_PRC_CI_AS

(這是因為暫存#TempTable預設的COLLATE為系統tempdb的COLLATE的關係,

且tempdb為系統數據庫,不允許使用Alter DataBase去變更COLLATE)

而於繁體數據庫中,所有的Table中char / varchar預設皆為Chinese_Taiwan_Stroke_CI_AS

如此只要Join了不同COLLATE的Field,

就會引發錯訊 "无法解决 equal to 操作的排序规则冲突。"


要解決上述的問題有以下3種方式:

1)、 於Create Table #TempTable時,註明每個Field的COLLATE…

Ex:

Create Table #TempTable

(Field01 varchar(10) COLLATE database_default,

Field02 varchar(20) COLLATE database_default)

以上char / varchar皆註明COLLATE database_default,其中database_default的意義為

告訴SQLServer說,這個#TempTable的COLLATE請參照目前連結的DB,而不要去參照tempdb



Create Table #TempTable

(Field01 varchar(10) COLLATE Chinese_Taiwan_Stroke_CI_AS,

Field02 varchar(20) COLLATE Chinese_Taiwan_Stroke_CI_AS)

以上char / varchar皆註明特定的COLLATE,以確保 #TempTable的COLLATE

和我們DB中Table的COLLATE保持一致,而不要再去參照tempdb

2)、 在Join實體Table與#TempTable時註明COLLATE為何

Ex:

Select * From Table1 t1, #TempTable t2

Where t1.Field01 = t2.Field01

Collate Chinese_Taiwan_Stroke_CI_AS -- 在Select的最後註明要使用的COLLATE為何

3)、 繁體的SQLServer使用繁體的DB / 簡體的SQLServer使用簡體的DB,

不要交叉互相使用,也就是在SQLServer中固定使用與該SQLServer預設相同COLLATE的Table,也就是

在繁體的SQLServer中Create繁體用的DB後,再Create Table & Field,

如此預設所有Field的COLLATE就會是Chinese_Taiwan_Stroke_CI_AS

而在簡體的SQLServer中Create簡體用的DB後,再Create Table & Field,

如此預設所有Field的COLLATE就會是Chinese_PRC_CI_AS


3、“...WHILE ATTEMPTING TO OPEN OR CREATE...”,數據庫創建失敗問題
用程式創建一個sql server 資料庫時,出現了“...WHILE ATTEMPTING TO OPEN OR CREATE...”,資料庫創建失敗。看起來是沒有權限的關系。但是在studio里面是可以創建的。

後來查找sql configuration management (組態管理員),發現sql server 及sql agent登入身份都是networt service。據查資料,若系統服務netlogon沒有啟動的話,那么sql以這種身份登入,權限是無法被識別的。或是獨立型的服務器,采用這種方式登錄也不行。

解決方式是把登入身份改為本地帳戶(透過組態管理員)
...全文
616 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
J198728 2010-03-11
  • 打赏
  • 举报
回复
楼主是台湾的,怎么有繁体,
blood_akm 2010-03-10
  • 打赏
  • 举报
回复
真的很不错!!!!!!!!!!!!!感谢分享
boailixiao 2010-03-09
  • 打赏
  • 举报
回复
挺不错的,支持挺不错的,支持
zsx12321 2010-03-08
  • 打赏
  • 举报
回复
收藏了·
以后用的着
洛尔烈焰 2010-03-08
  • 打赏
  • 举报
回复
挺不错的,支持挺不错的,支持
zsyqm 2010-03-07
  • 打赏
  • 举报
回复
好久没来,积分太少了。下不了好的东东
jking1989 2010-03-07
  • 打赏
  • 举报
回复
顶一个..............
收下了..........THANKS!!!!!
dengkexi 2010-03-05
  • 打赏
  • 举报
回复
真的很不错!!!!!!!!!!!!!感谢分享
CACACACACA 2010-03-03
  • 打赏
  • 举报
回复
mark .


上次的MARK居然没提交上去 :(
bear_zyh 2010-03-03
  • 打赏
  • 举报
回复
关注。。。。。。。。。。。。。。
donil 2010-03-03
  • 打赏
  • 举报
回复
不错,有关于oracle的吗?
ok1411 2010-03-03
  • 打赏
  • 举报
回复
ding..........
SlaughtChen 2010-03-03
  • 打赏
  • 举报
回复
挺不错的,支持!!!
okmnji79513 2010-03-03
  • 打赏
  • 举报
回复
支持,学习

回复内容太短了!
wsxcdx 2010-03-03
  • 打赏
  • 举报
回复
感谢楼主分享!!!!!!!!!!!!!!!
lancijk 2010-03-03
  • 打赏
  • 举报
回复
好东西哈。受用了!谢谢!
lhslktg 2010-03-03
  • 打赏
  • 举报
回复
支持楼主。。。。。。。
yj411511168 2010-03-03
  • 打赏
  • 举报
回复
谢谢楼主分享,顶了,楼主好人
dd_zhouqian 2010-03-02
  • 打赏
  • 举报
回复
好,支持
。。
liangpei2008 2010-03-02
  • 打赏
  • 举报
回复
挺不错的,支持
加载更多回复(18)

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧