MSSQL获取表中所有字段名称

select name from syscolumns where id=object_id('表名') order by colid

该SQL查询条件可以获得指定表的所有字段名称

以colid排序后,显示的字段名称顺序跟表设计的顺序是一致的,不排序的话就是字段的首字母排序。

Posted in 数据库 at October 7, 2008. by 傻猫 .    Views: 3786    No Comments

sqlserver日志文件清理方法

       日志文件满而造成SQL数据库无法写入文件时,可用两种方法:
  
  一种方法:清空日志。

  1.打开查询分析器,输入命令
  DUMP TRANSACTION 数据库名 WITH NO_LOG

  2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

  另一种方法有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。

  1: 删除LOG
  分离数据库 企业管理器->服务器->数据库->右键->分离数据库

  2:删除LOG文件
  附加数据库 企业管理器->服务器->数据库->右键->附加数据库

  此法生成新的LOG,大小只有500多K。

  注意:建议使用第一种方法。

  如果以后,不想要它变大。

  SQL2000下使用:
  在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。

  或用SQL语句:
  alter database 数据库名 set recovery simple

  另外,数据库属性有两个选项,与事务日志的增长有关:

  Truncate log on checkpoint
  (此选项用于SQL7.0,SQL 2000中即故障恢复模型选择为简单模型)

  当执行CHECKPOINT 命令时如果事务日志文件超过其大小的70% 则将其内容清除在开发数据库时时常将此选项设置为True

  Auto shrink
  定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint 选项设为True 时才能进行。

  注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。

Posted in 数据库 at September 9, 2008. by 傻猫 .    Views: 4028    1 Comment

MSSQL分页存储过程

一段MSSQL分页的存储过程,先收藏了,备用。

CREATE PROCEDURE GTNews_Search
(
             @SearchSQL nvarchar(4000),
 @RecordCountSQL nvarchar(4000),
 @PageIndex int=0,
 @PageSize int=25
)
AS
BEGIN


DECLARE @StartTime datetime
 DECLARE @RowsToReturn int
 DECLARE @PageLowerBound int
 DECLARE @PageUpperBound int
 DECLARE @Count int

-- Used to calculate cost of query
 SET @StartTime = GetDate()

-- Set the rowcount
 SET @RowsToReturn = @PageSize * (@PageIndex + 1)
 SET ROWCOUNT @RowsToReturn

-- Calculate the page bounds
 SET @PageLowerBound = @PageSize * @PageIndex
 SET @PageUpperBound = @PageLowerBound + @PageSize + 1

-- Create a temp table to store the results in
 CREATE TABLE #SearchResults
 (
  IndexID int IDENTITY (1, 1) NOT NULL,
  NewsID int
 )

-- Fill the temp table
 INSERT INTO #SearchResults (NewsID)
 exec (@SearchSQL)

-- SELECT actual search results from this table
 SELECT
  D.*,catname=(SELECT title FROM GT_news_cat WHERE id=D.catid)
 FROM
  GT_news_data D,
  #SearchResults R
 WHERE
  R.NewsID = D.ID AND
  R.IndexID > @PageLowerBound AND
  R.IndexID < @PageUpperBound

 -- Do we need to return a record estimate?
 exec (@RecordCountSQL) 


            SELECT Duration = GetDate() - @StartTime
END
GO

Posted in 数据库 at August 14, 2008. by 傻猫 .    Views: 3167    No Comments

SQL将日期按天分类统计

今天在做SQL统计的时候,有一个任务需要将日期按天分类统计,也就是把每天的订单数,以及其它信息的汇总,用下面这个函数就可以搞定,这个是统计已经有的天数。如果某天没有数据的话,就没有。

另外我在网上看到一种方法,如果某天没数据也要显示为0的话,就这样操作:先建一个日期表,再进行链表操作,关联查询就可以了。

select   convert(varchar(10),mytime,120)  时间 , count(*)   订单数 , 
sum (trueprice),   sum(price)  from   wenchuan_512     
Group   by   convert(varchar(10),mytime,120)
order   by   convert(varchar(10),mytime,120)

Posted in 数据库 at June 12, 2008. by 傻猫 .    Views: 7071    1 Comment

ASP数据库操作常用函数集

 ASP数据库操作常用函数集,经典的东西收藏备用。

代码来源于Mir ZhouYang。

dbinit()                        连接数据库  

opendb(asqlstr,rs_temp)         打开记录集的函数  

selectdb(awherestr,dbname,rs_temp) 打开表的函数   

deletedb(awherestr,dbname)      数据库删除记录的函数  

updatedb(aarr,awherestr,dbname) 数据库修改记录的函数  

insertdbex(aarr,dbname,rs_temp) 数据库增加记录的函数  

insertdbrs(aarr,dbname)         数据库增加记录(insert into)返回当前记录id  

insertdb(aarr,dbname)           数据库插入记录的函数  

dbclose()                       页面结束关闭数据库 

 

ASP/Visual Basic代码
  1. <%   
  2. '=============================================  
  3. 'dbinit()                        连接数据库  
  4. 'opendb(asqlstr,rs_temp)         打开记录集的函数  
  5. 'selectdb(awherestr,dbname,rs_temp) 打开表的函数   
  6. 'deletedb(awherestr,dbname)      数据库删除记录的函数  
  7. 'updatedb(aarr,awherestr,dbname) 数据库修改记录的函数  
  8. 'insertdbex(aarr,dbname,rs_temp) 数据库增加记录的函数  
  9. 'insertdbrs(aarr,dbname)         数据库增加记录(insert into)返回当前记录id  
  10. 'insertdb(aarr,dbname)           数据库插入记录的函数  
  11. 'dbclose()                       页面结束关闭数据库  
  12. '========================================  
  13. dim Conn,rs_Event   
  14.   Set rs_Event = Server.CreateObject("ADODB.RecordSet")   
  15.   
  16. function dbinit()   
  17.   if conn <> null then    
  18.     exit function    
  19.   end if    
  20. Set conn = Server.CreateObject("ADODB.Connection")   
  21. conn.ConnectionTimeout = 10   
  22. conn.CommandTimeout = 30   
  23. conn.CursorLocation = 3   
  24. conn.ConnectionString = "driver={SQL Server};server="+database_servername+";uid="+database_loginname+";pwd="+database_password+";database="+database_name   
  25.   
  26. on Error Resume Next  
  27. conn.Open    
  28.            if err<>0 then   
  29.                       response.write "请验查数据库服务器的连接信息是否正确。"  
  30.                       response.end   
  31.            end if   
  32. end function    
  33.   
  34. function opendb(asqlstr,rs_temp)   
  35. '打开记录集的函数  
  36. 'asqlstr 是输入sql语句  
  37. 'rs_temp 是输入记录集变量  
  38. 'on Error Resume Next  
  39.   Set rs_temp = Server.CreateObject("ADODB.RecordSet")   
  40.   if rs_temp.state = adStateOpen then    
  41.     rs_temp.close   
  42.   end if    
  43. '  Response.Write asqlstr  
  44.   set rs_temp=server.createobject("adodb.recordset")   
  45.   rs_temp.CursorLocation=adUseClient   
  46.   rs_temp.open asqlstr, conn,adOpnestatic,adLockReadOnly,adCmdText   
  47. end function    
  48.   
  49. function selectdb(awherestr,dbname,rs_temp)   
  50. '打开表的函数  
  51.   
  52. 'awherestr 是sql中条件很语句  
  53. 'dbname  是数据表名  
  54. 'rs_temp 是记录集变量  
  55. 'on Error Resume Next  
  56.   selectdb = 1   
  57.   if rs_temp.state = adStateOpen then    
  58.     rs_temp.close   
  59.   end if    
  60.   rs_temp.CursorLocation=adUseClient   
  61.  'response.write "Select * from "&dbname&awherestr  
  62.   
  63.   rs_temp.open "Select * from "&dbname&awherestr, conn,adOpnestatic,adLockReadOnly,adCmdText   
  64.   if Conn.Errors.Count > 0 then    
  65.       selectdb =  0   
  66.    end if    
  67. end function    
  68.   
  69.   
  70. function selectdbtop(awherestr,dbname,rs_temp)   
  71. '打开表的函数  
  72. 'awherestr 是sql中条件很语句  
  73. 'dbname  是数据表名  
  74. 'rs_temp 是记录集变量  
  75. 'on Error Resume Next  
  76.   selectdb = 1   
  77.   if rs_temp.state = adStateOpen then    
  78.     rs_temp.close   
  79.   end if    
  80.   rs_temp.CursorLocation=adUseClient   
  81.  'response.write "Select * from "&dbname&awherestr  
  82.   rs_temp.open "Select * from "&dbname&awherestr, conn,adOpnestatic,adLockReadOnly,adCmdText   
  83.   if Conn.Errors.Count > 0 then    
  84.       selectdb =  0   
  85.    end if    
  86. end function    
  87.   
  88.   
  89. function deletedb(awherestr,dbname)   
  90. '数据库删除记录的函数  
  91. 'awherestr 是sql中条件很语句  
  92. 'dbnaem 是数据库名称  
  93. 'on Error Resume Next  
  94.    deletedb = 1   
  95.    Conn.Execute "delete from "&dbname&awherestr   
  96.    if Conn.Errors.Count > 0 then    
  97.      deletedb =  0   
  98.    end if    
  99. end function    
  100. function updatedb(aarr,awherestr,dbname)   
  101. '数据库修改记录的函数  
  102. 'aarr 修改数组  
  103. 'awherestr 是sql中条件很语句  
  104. 'dbnaem 是数据库名称  
  105. 'on Error Resume Next  
  106. dim i    
  107.    updatedb = 1   
  108.    t_values = ""  
  109.    for i=0 to ubound(aarr) - 1   
  110.      t_values=t_values&aarr(i,0)"='"&replace(aarr(i,1),"'","''")"',"  
  111.    next   
  112.    t_values=left(t_values,len(t_values) -1)   
  113.    Conn.Execute "update "&dbname" set "&t_values&awherestr   
  114.   
  115.    if Conn.Errors.Count > 0 then    
  116.       updatedb =  0   
  117.    end if    
  118.       
  119. end function    
  120. function insertdbex(aarr,dbname,rs_temp)   
  121. 'on Error Resume Next  
  122.   dim i   
  123.    insertdbex = 1   
  124.   if rs_temp.state = adStateOpen then    
  125.     rs_temp.close    
  126.   end if     
  127.    rs_temp.ActiveConnection = conn   
  128.    rs_temp.CursorType = adOpenKeyset   
  129.    rs_temp.LockType = adLockOptimistic   
  130.    rs_temp.source = dbname   
  131.    rs_temp.Open   
  132.    rs_temp.AddNew   
  133.    for i=0 to ubound(aarr) - 1   
  134.      
  135.   
  136.     rs_temp(aarr(i,0)) = aarr(i,1)   
  137.    next     
  138.   
  139.   
  140.    rs_temp.update   
  141.    if  Err.number <>  0 then    
  142.       response.write err.description   
  143.       response.end   
  144.       insertdbex =  0   
  145.    end if    
  146. end function    
  147. function insertdb(aarr,dbname)    
  148. '数据库插入记录的函数  
  149. 'dbnaem 是数据库名称  
  150. 'on Error Resume Next  
  151.   dim i    
  152.    err.clear   
  153.    insertdb = 1   
  154.    t_values = ""  
  155.    t_fields = ""  
  156.    for i=0 to ubound(aarr) - 1   
  157.      t_fields = t_fields&aarr(i,0)","  
  158.      t_values=t_values"'"&replace(aarr(i,1),"'","''")"',"        
  159.    next   
  160.    t_values=left(t_values,len(t_values) -1)   
  161.    t_fields=left(t_fields,len(t_fields) -1)   
  162.   
  163.    Conn.Execute "insert into "&dbname" ("&t_fields") values ("&t_values")"  
  164.       
  165.    if (Conn.Errors.Count > 0) or (err.number <> 0)  then    
  166.       insertdb =  0   
  167.    end if    
  168.       
  169. end function    
  170.   
  171. function insertdbrs(aarr,dbname)    
  172. '数据库插入记录的函数  
  173. 'aarr 增加数组  
  174. 'dbnaem 是数据库名称  
  175. 'on Error Resume Next  
  176.   dim i    
  177.    err.clear   
  178.    insertdbrs = 1   
  179.    t_values = ""  
  180.    t_fields = ""  
  181.    for i=0 to ubound(aarr) - 1   
  182.      t_fields = t_fields&aarr(i,0)","  
  183.      t_values=t_values"'"&replace(aarr(i,1),"'","''")"',"        
  184.    next   
  185.    t_values=left(t_values,len(t_values) -1)   
  186.    t_fields=left(t_fields,len(t_fields) -1)   
  187.   
  188.    set returnrs=Conn.Execute("SET NOCOUNT ON;insert into "&dbname" ("&t_fields") values ("&t_values");SELECT @@IDENTITY")   
  189.   
  190.    if (Conn.Errors.Count > 0) or (err.number <> 0)  then    
  191.       insertdbrs =  0   
  192.    end if    
  193.   
  194.    insertdbrs=returnrs(0)   
  195.    returnrs.close   
  196.   
  197. end function    
  198. '页面结束关闭数据库  
  199. function dbclose()   
  200.   Conn.Close   
  201. end function    
  202.   
  203.   
  204. %>  
Posted in 数据库 at September 21, 2007. by 傻猫 .    Views: 3187    No Comments