首先是百度到的解决方案:

1.首先确认php.ini中的extensions的extension=php_mssql.dll前的分号已经去掉。

2.通过phpmyadmin确认此版本的php支持mssql函数。

3.如果 仍不能使用mssql_connect()函数,则将你的php目录下的ntwdblib.DLL文件拷贝到c:\windows\system32目录下。

4.若还不行,右键查看ntwdblib.DLL文件的版本,将其替换为最新的版本 2000.80.194.0 。

==========华丽分割线===============

我遇到的情况是:刚刚重新安装了mssql2005,是自定义安装,去掉了某些功能,问题就来了,估计是某个组件没能安装上,导致怎么也连接不了。上面的方法,第1个没有问题,我查看多少遍了。第2个方法也试过了,不过没找到在哪里查看:D。第3个方法试过以后,成了,但是不知道ntwdblib.DLL是个什么东东,一搜,原来是:

NTwdblib.dll是SQL   SERVER客户端连接库,   你在SQL   SERVER机器的WINNT\SYSTEM32下找到它,把它拷贝到你的客户端机器的SYSTEM32目录中就可以了.

了解了,原来如此,由此确定我是少安装了一些组件导致的。

Tags: ,
Posted in mssql at January 28th, 2010. No Comments.

1.打开sql server 2005

2.服务器名上右键->新建查询

3.在右面出现的新建查询界面输入DUMP TRANSACTION 数据库名 WITH NO_LOG,再点击执行按钮执行

4.数据库名右键->任务->收缩->文件。

5.选择日志文件,在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数

Tags:
Posted in mssql at January 27th, 2010. No Comments.
  1. /*
  2. 名称:PagingRecord
  3. 作用:按任意字段进行排序分页
  4. */
  5.  
  6. CREATE    PROCEDURE [dbo].[PagingRecord]
  7. (
  8. @PageIndex int,--页号,从0开始
  9. @PageSize int,--页尺寸
  10. @OrderField varchar(100),--排序字段及类型(多个条件用逗号分开)如:JobID DESC,Checkintime
  11. @TableName varchar(100),--表名或视图表
  12. @StrWhere varchar(2000),--条件
  13. @FieldList varchar(2000),--欲选择字段列表
  14. @DoCount  AS bit=1-- 0值返回记录总数, 非 0 值则返回记录
  15. )
  16. AS
  17.  
  18. BEGIN TRAN
  19.  
  20. DECLARE @SqlQuery varchar(4000)
  21.  
  22. IF @DoCount<>0
  23. Goto GetCount
  24. Else
  25. Goto GetSearch
  26.  
  27. GetCount:--返回记录总数
  28. DECLARE @SearchSql AS Nvarchar(4000)
  29. SET @SearchSql= 'SELECT Count(*) AS Total FROM <a href="mailto:%20+@TableName+%20">'+@TableName+'</a> WHERE <a href="mailto:%20+@StrWhere">'+@StrWhere</a>
  30. exec sp_executesql @SearchSql
  31. --print @SearchSql
  32. COMMIT TRAN
  33. return
  34.  
  35. GetSearch:
  36.  
  37. SET @SqlQuery='SELECT <a href="mailto:%20+@FieldList+%20">'+@FieldList+'</a>
  38. FROM (SELECT row_number() over(ORDER BY <a href="mailto:%20+@OrderField+%20">'+@OrderField+'</a>) as rownum,
  39. <a href="mailto:%20+@FieldList+%20">'+@FieldList+'</a>
  40. FROM <a href="mailto:%20+@TableName+%20">'+@TableName+'</a> WHERE <a href="mailto:%20+@StrWhere">'+@StrWhere</a> +') as temp
  41. WHERE rownum BETWEEN ('+cast(@PageIndex as varchar)+'-1)*'+cast(@PageSize as varchar)+'+1 and '+cast(@PageIndex
  42.  
  43. as varchar)+'*'+cast(@PageSize as varchar) + ' ORDER BY <a href="mailto:%20+@OrderField">'+@OrderField</a>
  44. --print @SqlQuery
  45. SET NOCOUNT ON
  46. execute(@SqlQuery)
  47. SET NOCOUNT OFF
  48. COMMIT TRAN
Tags:
Posted in mssql at March 11th, 2009. No Comments.

1.清空日志

1):打开查询分析器,输入命令
DUMP TRANSACTION 数据库名 WITH NO_LOG
2):再打开企业管理器–右键你要压缩的数据库–所有任务–收缩数据库–收缩文件–选择日志文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

2.删除LOG

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

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

3、如果想以后不让它增长

企业管理器->服务器->数据库->属性->事务日志->将文件增长限制为2M

再将此数据库设置自动收缩

Tags:
Posted in mssql at February 4th, 2009. No Comments.

mssql默认以系统时间格式输出,你可以调整系统的时间格式来解决

当然是在程序里解决比较灵活,例如:

“select  convert(char,日期字段,120)   as   date2   from   table”

convert(char,date,N)输出的各中样式
N 日期样式
0 04 2 2005 9:06AM
1 04/02/05
2 05.04.02
3 02/04/05
4 02.04.05

Read More…

Tags: , ,
Posted in keyboard's joy at September 9th, 2008. No Comments.

1、在ACCESS中经常使用的自动编号字段,导入到MSSQL后,他并不是自增型的INT,需要手工设置,把导入后的自动编号字段的标识的“否”改为“是”,“种子”和“递增量”都为“1”,才能成为自动编号;

2、在MSSQL SERVER中,有许多保留字,在ACCESS中是没有的,当你把数据导入到MSSQL的时候,问题就出来了。MSSQL在导入的时候,会自动给这些字段(包括数据库中的表名)加上“[字段名]”,因此,你必须修改你的脚本,把相应的字段名字(或者表名字)加上中括号,或改变字段名字为不是MSSQL的保留字。
例如user应该写为[user]
(具体是那些,请参考有关资料)

3、在用ACCESS关于时间的使用,大家喜欢使用“SELECT * FROM AAAA WHILE TIME="&NOW()”这样的SQL语句,然而,在MSSQL中没有“NOW()”这个函数,而是使用“GETDATE()”,所以,所有的SQL语句中的“NOW()”必须换成“GETDATE()”,请吧sql语句和默认值改为getdate()。

4、在ACCESS中SQL如果用到mid(str,bengin,strlen),在MSSQL中没有这个函数,可以用这个代替left(right(str,len(str)-1),strlen),例如
Mid(”202.097.181.059”,5,3)
改为:left(right(”202.97.181.059”,len(”202.097.181.059”)-),3)

5、在ACCESS的SQL语句中的时间使用变量查询的时候,大家一般使用“SELECT * FROM AAAA WHILE TIME=#"&变量名&"#"”,在MSSQL中是不行的,他的语法是“SELECT * FROM AAAA WHILE TIME=”"&变量名&"”"”。(意思是让你把日期时间变量当成字符串来使用,呵呵~~~)

6、在需要用到时间计算的时候,通常大家使用“SELECT * FROM AAAA WHERE DATEDIFF(”dd”,#"&NOW()&"#,被比较的字段名)>0”这样的语法,在使用到MSSQL的时候是绝对通不过的,即使把#"&NOW()&"# 换成了”"&GETDATE()&"”也没有用,因为MSSQL中的DATEDIFF()函数不认识“”计算类型””里的单引号,你必须使用双引号,并且使用两个(ASP的语法规则)。因此这样的语句应该换成“SELECT * FROM AAAA WHERE DATEDIFF(""dd"",”"&GETDATE()&"”,被比较的字段名)>0”。

7、在ACCESS数据表中的“是/否”类型字段,导入到MSSQL后,是BIT字段,他的值不再是“TRUE”或“FALSE”,而是“1”和“0”,并且“1”和“0”在ASP中并不绝对等同于“TRUE”或“FALSE”,因此在引用这些数据的时候,要加以注意。

8、ACCESS中备注型在MSSQL中改为TEXT或者NTEXT性,长度默认为16就可以,不影响贴子长度!
9、ACCESS中SQL语句 delete * from 表名…. 再MS SQL中改为delete from….

10、ACCESS 中的好多默认值在MSSQL中需要手工添加,特别是int型,请对照改动!

Tags:
Posted in mssql at June 28th, 2007. No Comments.