ÊÂÎñÈÕÖ¾½áβ¾³£Ìá½»Êý¾Ý¿âδ±¸·ÝµÄÊÂÎñÈÕÖ¾ÄÚÈÝ¡£»ù±¾ÉÏ£¬Ã¿Ò»´ÎÄãÖ´ÐÐÊÂÎñÈÕÖ¾±¸·Ýʱ£¬Äã¶¼ÔÚÖ´ÐÐÊÂÎñÈÕÖ¾½áβµÄ±¸·Ý¡£
ÄÇΪʲô»áÕâôÉè¼ÆÄØ£¿ÒòΪҲÐíÓÉÓÚ½éÖʵÄË𻵣¬µ±Êý¾Ý¿âÒѾ²»ÔÙ¿ÉÓÃʱ£¬Âé·³¾ÍÀ´ÁË¡£Èç¹ûÏÂÒ»¸öÂß¼²½ÖèÕýºÃ¾ÍÊÇÒª±¸·Ýµ±Ç°ÊÂÎñÈÕÖ¾µÄ»°£¬¿ÉÒÔÓ¦ÓÃÕâ¸ö±¸·ÝÀ´Ê¹Êý¾Ý¿â´¦Óڵȴý(Standby)״̬¡£ÄãÉõÖÁ¿ÉÒÔÔÚÊý¾Ý¿âÎļþ²»¿ÉÓõÄ״̬ÏÂʹÓÃNO_TRUNCATEÀ´±¸·ÝÊÂÎñÈÕÖ¾£¬ÀýÈ磺
BACKUP LOG AdventureWorks TO DISK = 'G:\Backups\AdventureWorks_log_tail.bak' WITH NO_TRUNCATE
È»ºó£¬Äã¿ÉÒÔʹÓñ¸·ÝÈÕÖ¾µÄ½á¹û°Ñ´¦Óڵȴý״̬µÄÊý¾Ý“´ø»Ø”µ½·¢Éú´íÎó֮ǰµÄ״̬¡£
×¢Ò⣺ÕâÒ²ÊÇÁíÒ»¸öÈÃÄã°ÑÊÂÎñÈÕÖ¾ÎļþͬÊý¾ÝÎļþ·ÅÔÚ²»Í¬´ÅÅÌÉϵÄÔÒò¡£Èç¹ûËüÃÇÔÚͬһ¸ö´ÅÅÌÉϵϰ£¬´ÅÅÌËð»µÁË£¬Äã¾Í²»ÄÜ´Ó´ÅÅÌÉÏÔÙÈ¡µ½ÊÂÎñÈÕÖ¾µÄ±¸·ÝÁË¡£
ÁíÒ»¸öÎÊÌâÊÇ£¬µ±ÄãµÄÊý¾ÝʹÓÃÅúÁ¿ÈÕÖ¾»Ö¸´Ä£ÐÍʱ£¬µ±Ç°µÄÊÂÎñÈÕÖ¾Ö»°üÀ¨×îС»¯µÄÈÕÖ¾ÊÂÎñ¡£ÔÚÕâÖÖÇé¿öÏ£¬Ò»¸öÊÂÎñÈÕÖ¾±¸·ÝÐèÒª´æ´¢Êý¾ÝÒ³µÄÐ޸ġ£Èç¹ûÄãµÄÊý¾ÝÎļþ²»¿ÉÓÃÁË£¬ÄãÒ²¾Í²»Äܱ¸·ÝÊÂÎñÁË£¬ÉõÖÁÊÇ´øNO_TRUNCATEÑ¡ÏîÒ²²»ÐС£
×îºó£¬Èç¹ûÄãʹÓõÄÊÇSQL Server 2005»òÒÔÉϰ汾£¬Ã¿´ÎÄãÒª»Ö¸´µÄÊý¾Ý¿â¶¼ÊÇÒ ......
As a response for customer's question, I decided to write about using Like Operator in Linq to SQL queries.
Starting from a simple query from Northwind Database;
var query = from c in ctx.Customers
where c.City == "London"
select c;
The query that will be sent to the database will be:
SELECT CustomerID, CompanyName, ...
from dbo.Customers
WHERE City = [London]
There are some ways to write a Linq query that reaults in using Like Operator in the SQL statement:
1. Using String.StartsWith or String.Endswith
Writing the following query:
var query = from c in ctx.Customers
where c.City.StartsWith("Lo")
select c;
will generate this SQL statement:
SELECT CustomerID, CompanyName, ...
from ......
²éѯ֪ͨÊÇÔÚ Microsoft SQL Server 2005 ÖÐÒÔ¼° ADO.NET 2.0 µÄ System.Data.SqlClient ÃüÃû¿Õ¼äÖÐÒýÈëµÄ¡£²éѯ֪ͨ½¨Á¢ÔÚ Service Broker »ù´¡½á¹¹µÄ»ù´¡ÉÏ£¬Ê¹Ó¦ÓóÌÐò¿ÉÒÔÔÚÊý¾Ý¸ü¸ÄʱÊÕµ½Í¨Öª¡£Èç¹ûÓ¦ÓóÌÐòÌṩÊý¾Ý¿âÖÐÐÅÏ¢µÄ»º´æ£¨ÀýÈç Web Ó¦ÓóÌÐò£©£¬ÐèÒªÔÚÔ´Êý¾Ý¸ü¸Äʱ½ÓÊÕ֪ͨ£¬´Ë¹¦ÄÜÌØ±ðÓÐÓá£
ͨ¹ýÈýÖÖ·½Ê½¿ÉÒÔʹÓà ADO.NET ʵÏÖ²éѯ֪ͨ£º
µÍ¼¶ÊµÏÖÓÉ SqlNotificationRequest ÀàÌṩ£¬¸ÃÀ๫¿ª·þÎñÆ÷¶Ë¹¦ÄÜ£¬Ê¹Äú¿ÉÒÔ¶Ô֪ͨÇëÇóÖ´ÐÐÃüÁî¡£
¸ß¼¶ÊµÏÖÓÉ SqlDependency ÀàÌṩ£¬¸ÃÀàÌṩԴӦÓóÌÐòÓë SQL Server Ö®¼ä֪ͨ¹¦Äܵĸ߼¶³éÏó£¬Ê¹Äú¿ÉÒÔʹÓÃÏà¹ØÐÔÀ´¼ì²â·þÎñÆ÷Öеĸü¸Ä¡£´ó¶àÊýÇé¿öÏ£¬ÕâÊÇÍйܿͻ§¶ËÓ¦ÓóÌÐòͨ¹ýÊÊÓÃÓÚ SQL Server µÄ .NET Framework Êý¾ÝÌṩ³ÌÐòÀûÓà SQL Server ֪ͨ¹¦ÄܵÄ×î¼òµ¥¡¢×îÓÐЧµÄ·½·¨¡£
´ËÍ⣬ʹÓà ASP.NET 2.0£¨»ò¸ü¸ß°æ±¾£©¹¹½¨µÄ Web Ó¦ÓóÌÐò¿ÉÒÔʹÓà SqlCacheDependency °ïÖúÆ÷Àà¡£
Èç¹ûÓ¦ÓóÌÐòÐèҪͨ¹ýË¢ÐÂÏÔʾ»ò»º´æÀ´ÏìÓ¦»ù´¡Êý¾ÝÖеĸü¸Ä£¬²éѯ֪ͨ·Ç³£ÓÐÓá£Èç¹ûÖ´ÐÐÏàͬÃüÁîÉú³ÉµÄ½á¹û¼¯Óë×î³õ¼ìË÷µ½µÄ½á¹û¼¯²»Í¬£¬Ôò Microsoft SQL Server ¿ÉÔÊÐí .NET Framework Ó¦ÓóÌÐòÏò SQL Server ·¢ËÍÃüÁîºÍÇëÇ ......
1ʹÓò»´ø²ÎÊýµÄ´æ´¢¹ý³Ì
¡¡¡¡Ê¹Óà JDBC Çý¶¯³ÌÐòµ÷Óò»´ø²ÎÊýµÄ´æ´¢¹ý³Ìʱ£¬±ØÐëʹÓà call SQL תÒåÐòÁС£²»´ø²ÎÊýµÄ call תÒåÐòÁеÄÓï·¨ÈçÏÂËùʾ£º
¡¡¡¡
ÒÔÏÂÊÇÒýÓÃÆ¬¶Î£º
{call procedure-name}
¡¡¡¡×÷ΪʵÀý£¬ÔÚ SQL Server 2005 AdventureWorks ʾÀýÊý¾Ý¿âÖд´½¨ÒÔÏ´洢¹ý³Ì£º
¡¡¡¡
ÒÔÏÂÊÇÒýÓÃÆ¬¶Î£º
CREATE PROCEDURE GetContactFormalNames
¡¡¡¡AS
¡¡¡¡BEGIN
¡¡¡¡ SELECT TOP 10 Title + ' ' + FirstName + ' ' + LastName AS FormalName
¡¡¡¡ from Person.Contact
¡¡¡¡END
´Ë´æ´¢¹ý³Ì·µ»Øµ¥¸ö½á¹û¼¯£¬ÆäÖаüº¬Ò»ÁÐÊý¾Ý(ÓÉ Person.Contact ±íÖÐǰʮ¸öÁªÏµÈ˵ijƺô¡¢Ãû³ÆºÍÐÕÊÏ×é³É)¡£
¡¡¡¡ÔÚÏÂÃæµÄʵÀýÖУ¬½«Ïò´Ëº¯Êý´«µÝ AdventureWorks ʾÀýÊý¾Ý¿âµÄ´ò¿ªÁ¬½Ó£¬È»ºóʹÓà executeQuery ·½·¨µ÷Óà GetContactFormalNames ´æ´¢¹ý³Ì¡£
ÒÔÏÂÊÇÒýÓÃÆ¬¶Î£º
¡¡¡¡public static void executeSprocNoParams(Connection con) ...{
¡¡¡¡ try ...{
¡¡¡¡ Statement stmt = con.c ......
1ʹÓò»´ø²ÎÊýµÄ´æ´¢¹ý³Ì
¡¡¡¡Ê¹Óà JDBC Çý¶¯³ÌÐòµ÷Óò»´ø²ÎÊýµÄ´æ´¢¹ý³Ìʱ£¬±ØÐëʹÓà call SQL תÒåÐòÁС£²»´ø²ÎÊýµÄ call תÒåÐòÁеÄÓï·¨ÈçÏÂËùʾ£º
¡¡¡¡
ÒÔÏÂÊÇÒýÓÃÆ¬¶Î£º
{call procedure-name}
¡¡¡¡×÷ΪʵÀý£¬ÔÚ SQL Server 2005 AdventureWorks ʾÀýÊý¾Ý¿âÖд´½¨ÒÔÏ´洢¹ý³Ì£º
¡¡¡¡
ÒÔÏÂÊÇÒýÓÃÆ¬¶Î£º
CREATE PROCEDURE GetContactFormalNames
¡¡¡¡AS
¡¡¡¡BEGIN
¡¡¡¡ SELECT TOP 10 Title + ' ' + FirstName + ' ' + LastName AS FormalName
¡¡¡¡ from Person.Contact
¡¡¡¡END
´Ë´æ´¢¹ý³Ì·µ»Øµ¥¸ö½á¹û¼¯£¬ÆäÖаüº¬Ò»ÁÐÊý¾Ý(ÓÉ Person.Contact ±íÖÐǰʮ¸öÁªÏµÈ˵ijƺô¡¢Ãû³ÆºÍÐÕÊÏ×é³É)¡£
¡¡¡¡ÔÚÏÂÃæµÄʵÀýÖУ¬½«Ïò´Ëº¯Êý´«µÝ AdventureWorks ʾÀýÊý¾Ý¿âµÄ´ò¿ªÁ¬½Ó£¬È»ºóʹÓà executeQuery ·½·¨µ÷Óà GetContactFormalNames ´æ´¢¹ý³Ì¡£
ÒÔÏÂÊÇÒýÓÃÆ¬¶Î£º
¡¡¡¡public static void executeSprocNoParams(Connection con) ...{
¡¡¡¡ try ...{
¡¡¡¡ Statement stmt = con.c ......
1.
select top m * from tablename where id not in (select top n id from tablename)
2.
select top m * into ÁÙʱ±í(»ò±í±äÁ¿) from tablename order by columnname -- ½«top m±Ê²åÈë
set rowcount n
select * from ±í±äÁ¿ order by columnname desc
3.
select top n * from
(select top m * from tablename order by columnname) a
order by columnname de ......
¸ñʽ:
CONVERT(data_type,expression[,style])
˵Ã÷:
´ËÑùʽһ°ãÔÚʱ¼äÀàÐÍ(datetime,smalldatetime)Óë×Ö·û´®ÀàÐÍ(nchar,nvarchar,char,varchar)
Ï໥ת»»µÄʱºò²ÅÓõ½.
Àý×Ó:
SELECT CONVERT(varchar(30),getdate(),101) now
½á¹ûΪ:
now
---------------------------------------
|09/15/2001
===================================================================
styleÊý×ÖÔÚת»»Ê±¼äʱµÄº¬ÒåÈçÏÂ:
------------------------------------------------------------------------------------------------------------
Style(2λ±íʾÄê·Ý) | Style(4λ±íʾÄê·Ý) | ÊäÈëÊä³ö¸ñʽ
------------------------------------------------------------------------------------------------------------
0   ......