table
(
(18,4),
price money,
as *price --這里就是計算列
)
計算列是不需要我們指定數據類型與是否允許為null等信息的,會根據情況自動賦予數據類型
使用SSMS創建“計算列”:打開“設計表格”窗口,在屬性中有一項“計算所得列的規范( )”,展開,公式() 寫計算公式,是否持久(Is )
計算列如果沒有特殊的設定,它將會是一個虛擬列,也就是這個列實際上是不存在的,只是每次要取這列的值時,sql會按照計算列的公式計算一次,再把結果返回給我們。這樣就會存在一些問題,比如,每次計算都會消耗一定的時間,而且也不能在這個列上創建索引。那么能不能把計算列的結果存起來,每次取數據的時候直接把結果返回給我們,而不用每次去計算。呵呵,恭喜你,創建計算列時把"是持久的"這個選項勾起來,就能達到我們的目的了,這時候,計算列就是一個實實在在的列,也可以在該列上創建索引了。
注意:
1,計算列如果沒有設置為"是持久的",那么它是不可以用來做check, key或not null約束。當然,如果我們在 sql 為計算列設置了check等約束了,sql 會自動將該列設置為"是持久的"。
2,計算列不可以再次用來作為中一個計算列的一部分。
3,在觸發器,不可以對計算列進行判斷,否則會報如下錯誤:
列”不能在IF 子句中使用2008數據庫查詢分析器在哪,因為它是計算列。”
9.重置自增列:
--- 刪除原表數據,并重置自增列
table --方式也可以重置自增字段
--重置表的自增字段,保留數據
DBCC (,,0)
-- 設置允許顯式插入自增列
SET ON
-- 當然插入完畢記得要設置不允許顯式插入自增列
SET Off
10. -分布式事務
創建link 時,有個選項是“ of for RPC”,設置為true 表示啟用分布式事務,前提是保證兩個或多個數據庫服務器都啟用了 服務,如未做設置會報錯“OLE DB "" for "" "The has its for / ." ”;設置false就不會報這個錯了
11.sql 數據庫中不能識別的空格 ascii 160 ,可以識別的空格是 ascii 32
把ascii 160空格替換掉:(@str,char(160),'')
12. 定時執行sql job時,報錯:
as user: gt. Login . The login is from an and be used with . [ 28000] (Error 18452). The step .
這個時候需要去檢查Job調用的存儲過程或執行的T-Sql語句中,是否包含Link ?創建的Link 是否沒有問題,是否指定了鏈接服務器的賬號和密碼?如果沒有指定賬號和密碼則需要重新創建Link .
13.sql 創建用戶,如果提示該用戶已存在,請檢查各個數據庫下是否有該用戶,如果有則刪除掉,然后再重新創建該用戶及分配權限
14.sql 創建完用戶后,我建議要重啟一下數據庫服務
15.附加沒有日志文件的數據庫的方法,
1.新建同名的數據庫文件
2.暫停服務
3.將原先的mdf文件,覆蓋新建的數據庫2008數據庫查詢分析器在哪,刪除新數據庫的ldf文件
4.重新啟動服務 ,這時看到的數據庫是這個樣子的,打不開
5.執行以下SQL語句
1 --1.設置為緊急狀態
2 alter database 數據庫名稱 set emergency 3 --2.設置為單用戶模式 4 alter database 數據庫名稱 set single_user 5 --3.檢查并重建日志文件 6 dbcc checkdb('數據庫名稱',REPAIR_ALLOW_DATA_LOSS) 7 --4.第3步操作如果有錯誤提示,運行第4步,沒有錯誤則跳過 8 dbcc checkdb('數據庫名稱',REPAIR_REBUILD) 9 --5.恢復成多用戶模式 10 alter database 數據庫名稱 set multi_user
?