揭秘SQL Server開發(fā)中需要注意的十個問題_Mssql數(shù)據(jù)庫教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:詳解數(shù)據(jù)庫導出成excel的sql語句INSERT INTO OPENROWSET('microsoft.jet.oledb.4.0','excel 8.0;hdr=yes;database=g:wgtz.xls;',sheet1$) SELECT * FROM aa
1、什么是常見的對表和字段的名字約束?回答:
SQL Server 2000下的表和字段名稱有1到128字節(jié)的限制,并且遵循用于標識的規(guī)則。第一個字母必須是如下的一種:
Unicode Standard 2.0中規(guī)定的字母。
Unicode對字母的定義包括:拉丁字母,從A到Z,除了來自其他語言的字母之外。
下劃線(_),at符號(@),或者數(shù)字符號(#) 在SQL Server中以這些符號作為標識符的開始具有特殊的含義。一個以at符號(@)開頭的標識符表示一個本地的變量或者參數(shù)。一個以數(shù)字符號(#)開頭的標識符代表一個臨時表或者過程。一個以兩個數(shù)字符號(##)開頭的標識符標識的是一個全局臨時對象。一些Transact-SQL函數(shù)的名字以兩個at符號(@@)開頭。為了避免與這些函數(shù)混淆,推薦你不要使用兩個at符號(@@)開頭的標識符。接下來的字母可以是以下的任意幾種:
Unicode Standard 2.0定義的字母
來自基礎拉丁文或者其他語音的十進制數(shù)字
at符號(@),美元符號($),數(shù)字符號(#),或者下劃線
標識符絕對不能是Transact-SQL的保留字。SQL Server保留了一些大寫和小寫的保留字。內(nèi)建的空間或者特殊的字母都不允許出現(xiàn),盡管你可以在好的老版本的Northwind中看到它們包含了內(nèi)建的空間。你必須通過把它們括在括號中才可以訪問。
2、不具有任何T-SQL知識的情況下編寫SQL Server2005存儲過程嗎?
作為過去幾年里面微軟試圖用SQL Server 2005的.net集成來稱霸市場的野心的結果,許多程序員都認為創(chuàng)建SQL Server存儲過程不再必需T-SQL了。不幸的是(或者并非如此,這根據(jù)你的觀點),這并不全是事實。在技術上是可以在不了解T-SQL的情況下創(chuàng)建存儲過程的,但是沒有T-SQL的話則無法訪問任何的數(shù)據(jù)。
在CLR存儲過程內(nèi)部進行數(shù)據(jù)訪問,是通過使用標準的ADO.NET類來完成的。開發(fā)人員會在應用程序層發(fā)現(xiàn)很多同樣的沒有用處的數(shù)據(jù)訪問代碼,這些代碼會很輕易地轉移到SQLCLR例程中去。當中間層的這些ADO.NET類需要使用T-SQL來訪問數(shù)據(jù)的時候,在 CLR主機提供的環(huán)境中就會使用同樣的類。
我要強調的是,從技術角度來說,不使用T-SQL來編寫存儲過程是可能的。那么有沒有理由這么做呢?一種情況就是這是一個用來從普通文件或者網(wǎng)絡服務中檢索數(shù)據(jù)的CLR存儲過程,并將數(shù)據(jù)格式設置為行集。這里可能就會用到不需要T-SQL的操作——但是這并不是對T -SQL存儲過程能力的一個很好的比喻。
3、T-SQL 中如何比較CLR 存儲過程和函數(shù)的性能?
回答:
這里是用來比較T-SQL例程和CLR例程性能的一種常用的規(guī)則:用你的數(shù)據(jù),在你的服務器上,測試兩套配置,看看哪一個比較好。 就是說,許多人都運行過性能測試,一般的結果就是T-SQL在標準的CRUD(創(chuàng)建、讀取、更新、刪除)操作上表現(xiàn)要比好一點,而在復雜數(shù)學、字符串賦值和其他的超過數(shù)據(jù)訪問的任務上,則是CLR的性能表現(xiàn)更好一點。 SQL Server 的專家Gustavo Larriera編輯了如下一些關于這個主題的有用鏈接:
在 SQL Server 2005中使用CLR Integration。
簡單介紹在 SQL Server 2005中的 CLR Integration。
在 SQL Server 2005中對CLR 和T-SQL做出選擇。
介紹 SQL Server 2005中的 CLR Integration。
SQL Server 閑談: SQL Server 2005 Beta 2 CLR問題與回答。
數(shù)據(jù)庫管理員的防御.NET。 ·用戶自定義函數(shù)的性能比較。
4、我如何在一個存儲過程中使用另一個存儲過程產(chǎn)生的結果?
回答:
只要存儲過程只產(chǎn)生了一個單個的結果,要在另外一個存儲過程中使用這個存儲過程產(chǎn)生的輸出,這個技術是非常直接的。這個技術就是使用一個臨時表來裝載存儲過程的巨額iguo,然后通過INSERT EXEC語句來執(zhí)行這個過程并保存結果。一旦結果保留在臨時表中了,他們就可以像使用其它表數(shù)據(jù)一樣來使用它了。 這里是我們可能會復用的一個過程例子:
CREATE PROC usp_Demo_AllAuthors as select * from pubs..authors GO |
現(xiàn)在有一個存儲過程使用usp_Demo_AllAuthors的結果:
CREATE proc usp_Demo_SPUser as CREATE TABLE #Authors ( au_id varchar(11) NOT NULL PRIMARY KEY CLUSTERED, au_lname varchar (40) NOT NULL , au_fname varchar (20) NOT NULL , phone char (12) NOT NULL, address varchar (40) NULL , city varchar (20) NULL , state char (2) NULL , zip char (5) NULL , contract bit NOT NULL )– Execute usp_Demo_AllAuthors storing the – results in #Authors insert into #Authors exec usp_Demo_AllAuthors– Here we use the #Authors table. This example only – only selects from the temp table but you could do much – more such as use a cursor on the table or join with – other data. SELECT au_fName + ‘ ‘ + au_lname as [name] , address+’, ‘+city+’, ‘+state+’ ‘+zip [Addr] from #AuthorsDROP TABLE #Authors GO |
分享:從Access數(shù)據(jù)庫到SQL Server高手之前編寫軟件都是ASP+Access,由于看到SQL Server數(shù)據(jù)庫中的一些功能確實高過ACCESS,具體如下: 1、觸發(fā)器: 有了觸發(fā)器,也就是可以在增加一個數(shù)據(jù)的時候對應調用一個過程來維護數(shù)據(jù)庫的完整性。 2、視圖: 這個是我對SQL Server最感興趣的一個功能,通過
相關Mssql數(shù)據(jù)庫教程:
- sql 語句練習與答案
- 深入C++ string.find()函數(shù)的用法總結
- SQL Server中刪除重復數(shù)據(jù)的幾個方法
- sql刪除重復數(shù)據(jù)的詳細方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲過程參數(shù)的用法實例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- 探討SQL Server 2005的評價函數(shù)
- 關于Oracle數(shù)據(jù)庫與SQL Server數(shù)據(jù)庫鏡像的關系
- 解讀SQL Server 2005:數(shù)據(jù)類型最大值
- 怎樣使用SQLServer數(shù)據(jù)庫查詢累計值
- 給SQL Server 2008 安裝安全審計
- sqlserver2005自動創(chuàng)建數(shù)據(jù)表和自動添加某個字段索引
- SQL操作全集(部分是Mssql語句,不在access中使用)
- 解讀SQL Server查詢含有單引號數(shù)據(jù)的方法
- 為何把你的數(shù)據(jù)庫置于版本控制之下
- 關于sqlserver 2005 使用臨時表的問題( Invalid object name #temptb)
- 相關鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-揭秘SQL Server開發(fā)中需要注意的十個問題。