SQL Server開發過程中的十種常見問題總結(1)

來源:互聯網
上載者:User

在SQL Server開發問題中你可能會問到的十個問題:

1、什麼是常見的對錶和欄位的名字約束? 
  2、有沒有可能在不瞭解T-SQL的情況下編寫預存程序?
  3、T-SQL中如何比較CLR預存程序和函數的效能?
  4、我如何在一個預存程序中使用另一個預存程序產生的結果?
  5、我如何解決SQL Server 2005的並發問題?
  6、在SQL Server 2005中用什麼工具替代了查詢分析器?
  7、你能提供一些有關SQL 和T-SQL的詳細資料嗎?
  8、SQL Server 2005有沒有新的索引類型?
  9、我如何建立一個指令碼在表中進行選擇?
  10、我如何列出那些沒有記錄的資料庫表?

對於表和欄位的常見名字約束

回答:

回答:

SQL Server 2000下的表和欄位名稱有1到128位元組的限制,並且遵循用於標識的規則。

第一個字母必須是如下的一種:

· Unicode Standard 2.0中規定的字母。

Unicode對字母的定義包括:拉丁字母,從A到Z,除了來自其他語言的字母之外。

· 底線(_),at符號(@),或者數字記號(#)

在SQL Server中以這些符號作為標識符的開始具有特殊的含義。一個以at符號(@)開頭的標識符表示一個本地的變數或者參數。一個以數字記號(#)開頭的標識符代表一個暫存資料表或者過程。一個以兩個數字記號(##)開頭的標識符標識的是一個全域臨時對象。

一些Transact-SQL函數的名字以兩個at符號(@@)開頭。為了避免與這些函數混淆,推薦你不要使用兩個at符號(@@)開頭的標識符。

接下來的字母可以是以下的任意幾種:

· Unicode Standard 2.0定義的字母

· 來自基礎拉丁文或者其他語音的十進位數字

· at符號(@),貨幣符號($),數字記號(#),或者底線

標識符絕對不能是Transact-SQL的保留字。SQL Server保留了一些大寫和小寫保留字。內建的空間或者特殊的字母都不允許出現,儘管你可以在好的老版本的Northwind中看到它們包含了內建的空間。你必須通過把它們括在括弧中才可以訪問。

不具有任何T-SQL知識的情況下編寫SQL Server2005預存程序嗎?

許多程式員都認為建立SQL Server預存程序不再必需T-SQL了。不幸的是(或者並非如此,這根據你的觀點),這並不全是事實。在技術上是可以在不瞭解T-SQL的情況下建立預存程序的,但是沒有T-SQL的話則無法訪問任何的資料。

在CLR預存程序內部進行資料訪問,是通過使用標準的ADO.NET類來完成的。開發人員會在應用程式層發現很多同樣的沒有用處的資料存取碼,這些代碼會很輕易地轉移到SQLCLR常式中去。當中介層的這些ADO.NET類需要使用T-SQL來訪問資料的時候,在 CLR主機提供的環境中就會使用同樣的類。

我要強調的是,從技術角度來說,不使用T-SQL來編寫預存程序是可能的。那麼有沒有理由這麼做呢?一種情況就是這是一個用來從普通檔案或者網路服務中檢索資料的CLR預存程序,並將資料格式設定為行集。這裡可能就會用到不需要T-SQL的操作——但是這並不是對T -SQL預存程序能力的一個很好的比喻。

CLR預存程序vs. T-SQL預存程序

CLR預存程序和函數與T-SQL預存程序和函數相比,效能如何?

回答:

這裡是用來比較T-SQL常式和CLR常式效能的一種常用的規則:用你的資料,在你的伺服器上,測試兩套配置,看看哪一個比較好。

就是說,許多人都運行過效能測試,一般的結果就是T-SQL在標準的CRUD(建立、讀取、更新、刪除)操作上表現要比好一點,而在複雜數學、字串賦值和其他的超過資料訪問的任務上,則是CLR的效能表現更好一點。

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問題與回答。

·資料庫管理員的防禦.NET。

·使用者自訂函數的效能比較。

如何在一個預存程序中使用另一個預存程序的結果?

專家回答:

只要預存程序只產生了一個單個的結果,要在另外一個預存程序中使用這個預存程序產生的輸出,這個技術是非常直接的。這個技術就是使用一個暫存資料表來裝載預存程序的巨額iguo,然後通過insert exec語句來執行這個過程並儲存結果。一旦結果保留在暫存資料表中了,他們就可以像使用其它表資料一樣來使用它了。

這裡是我們可能會複用的一個過程例子:

create PROC usp_Demo_AllAuthors as select * from pubs..authors GO    

現在有一個預存程序使用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   

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.