文章列表
 
您正在查看 "数据设计" 分类下的文章

2010年11月30日 星期二 20:51
update news set title=@title,types=@types,context=@context where id=@id ID字段类型为自动增加,这句语句放在sql里是不会有问题的,但在access却有一个明显的错误:标准表达式中数据类型不匹配(另外一种结果就是不会更新该条记录) 而造成的这个问题的原因就在于id的字段类型,在access where id=@id 如果id类型为数字,那么就不能存在''(在sql这里''是指定一个字段的值用,如'aaa'),而上面的文本命令的最后执行结果是update news set title='标题',types='类型' ,context='内容' where id='1' ,不知道这种错误算什么错误:( 而正确的语句应该是update news set title='标题',types='类型' ,context='内容' where id=1 ,偏偏delete 语句又不会出现上面所说的错误,如:delete from news where id=@id
发现数据库用access所花的编写代码的时间远远超出了用sql的代码编写时间,而且用access经常出现莫名错误,更主要就是可能有非法字符如果不使用文本命令就会执行错误,怀念sql,

也遇到过,一开始也是找不出任何原因,看了该文章后才有所了解,呵呵。。。多谢了。。。但不知道作者是如何解决的,我这里有一个方法,就是:sql = "update news set title=@title where id ="此处先不在后面跟:id = @id,而是另开一行:sql = sql + id       此处的id就是上面的@id....这样就可以解决了
 
2009年08月24日 星期一 17:53
 
2009年08月24日 星期一 11:10
 
2009年07月24日 星期五 9:30
请教大家一个问题SQL时间问题,在MSSQL中存储时间型的数据是2006-11-28 9:58:07   我现在要写程序时,要提取数据库里的2006-11-28这个就可以了,不需要那么时分秒那么精确,在写SQL语句时,应该怎么写呢,大家帮我看看吧~!谢谢! Select ID,News,C_CueTime From [New_Client] where C_CueTime =当前日期(格式:2006-11-28)  order by ID desc
(注:C_CueTime时间字 段格式为:2006-11-28 9:58:07) 当前日期  格式为:2006-11-28
问题解决:
CREATE FUNCTION [dbo].[getstrDT] (@dt nvarchar(10) )  
RETURNS  nvarchar(10)
AS  
BEGIN 

declare  @strT nvarchar(30)
declare @strM nvarchar(2)
declare @strD nvarchar(2)
select @strM=case len(cast(month(@dt) as nvarchar(2))) when 1 then '0'+cast(month(@dt) as nvarchar(2)) else cast(month(@dt) as nvarchar(2)) end
select @strD=case len(cast(day(@dt) as nvarchar(2))) when 1 then '0'+cast(day(@dt) as nvarchar(2)) else cast(day(@dt) as nvarchar(2)) end
--select @strT=cast(year(@dt) as nvarchar(4))+'-'+cast(month(@dt) as nvarchar(2))+'-'+cast(day(@dt) as nvarchar(2))
select @strT=cast(year(@dt) as nvarchar(4))+'-'+@strM+'-'+@strD
return @strT

END

把这个自定义函数放到你的SQL里
select dbo.getstrDT(你的日期) as 日期 from ..
就OK了
SQL中没有你要的函数,只能自己写
 
2009年06月06日 星期六 12:04
问题我自己解决了,如下:

sql server 2000以前的版本,例如7.0一般不存在多个版本,只有标准版跟桌面版,用户如果不清楚

该装什么版本的话,可按安装上的安装先决条件指示安装,一般在WIN2000 服务器版上装标准版,其

他的系统装桌面版的就可以;而SQL Server 2000安装问题就比较大,时常见问题有如下:

  (1)配置服务器时中断.

  (2)注册 ActiveX 时中断.

  (3)显示到100%的时候中断.

  (4)提示:command line option syntax error, type command /? for help,继续安装,最后在

配置服务器的时候出现:无法找到动态链接SQLUNIRL.DLL于指定的路径……

  (5)以前进行的程序创建了挂起的文件操作,运行安装程序前,必须重新启动

  (1)(2)(3)的解决办法:

  提醒:为避免误操作,先备份注册表和数据库进不了SQL Server 2000,可以备份 Program

Files\Microsoft SQL Server\MSSQL\Data 文件夹的文件.

  1、先把SQL Server卸载(卸载不掉也没有关系,继续下面的操作)

  2、把Microsoft SQL Server文件夹整个删掉。

  3、运行注册表,删除如下项:

  HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server

  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server

  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer

  4、需要的话就重新启动系统

  5、重新安装

  另外也可尝试单步运行安装 SQL Server 2000的方法:

  1:放入 SQL Server 2000 光盘.

  2:在"开始"--"运行"键入 "F:\x86\setup.exe k=dbg" (F是光盘)

  注意:

  一、不同的操作系统支持的SQL Server 2000版本以及对硬件的要求。

  Windows 2000 Server可以安装SQL Server 2000的任何版本.

  Windows 2000 Professional只能安装SQL Server 2000的个人版、开发版、评估版、MCDE

二、

  SQL Server 2000各版本以及对硬件的要求。

  (4)的解决办法

  因为安装文件的路径(完整路径)里有中文.

  比如 c:\SQLSERVER中文企业版\

  改成 c:\SQLSERVER\

  (5)的解决办法

  a、重启机器,再进行安装,如果发现还有该错误,请按下面步骤

  b、在开始->运行中输入regedit

  c、到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 位置

  d、选择文件->倒出,保存

  e、在右边窗口右击PendingFileRenameOperations,选择删除,然后确认

  f、重启安装,问题解决

  -------------------------------------------------------

  如果问题依旧,试试先修复操作系统

  命令提示符下执行:

  sfc /scannow 这里是Windows 文件保护

  最后的方法:换Windows 2000 安装盘 和SQL Server2000安装盘

  有时候问题的原因很奇怪,有人曾更换了一个电源就解决了问题。

  1 先卸载您的 SQL Server 2000,必要的时候删除 Program Files\Microsoft SQL Server 文件夹

  2 打开注册表

  在"开始"--"运行"键入 "regedit"

  3 按下列顺序点击打开

   + HKEY_LOCAL_MACHINE

   + SOFTWART

   + Microsoft

   + Windows

   + CurrentVersion

   + Setup

   + ExceptionComponents

  4 将 ExceptionComponents 下面的文件夹全部删除!

  如 {60BFF50D-FB2C-4498-A577-C9548C390BB9}

{60BFF50D-FB2C-4498-A577-C9548C390BB9}

{60BFF50D-FB2C-4498-A577-C9548C390BB9}

{60BFF50D-FB2C-4498-A577-C9548C390BB9}

  6 重新启动:

  7 重新安装 SQL Server 2000

  XP+SP2的问题

  1.winxp+sp2的系统需要安装SQL Server SP3(服务包补丁3),如果之前已经安装,必须再安装一次

  SP3可以在微软网站免费下载,中文版地址如下:

  SQL Server 2000 Service Pack 3a

  

http://download.microsoft.com/download/d/d/e/dde427eb-0296-4eac-a47c-d11a66b03816/chs_sql

2ksp3.exe

源文档 <http://bbs.zol.com.cn/index20060425/index_39_170975.html>

http://www.xker.com/Html/sjk/Mssql/2006_03_30_07_223_2.html

 
2009年05月18日 星期一 16:02

SqlConnection conn = new SqlConnection();
   conn.ConnectionString
= ConfigurationManager.ConnectionStrings["Test"].ConnectionString;
        SqlCommand selectCMD
= conn.CreateCommand();
        selectCMD.CommandText
= "SELECT * FROM tbTest WHERE id =@id ";
        selectCMD.Parameters.Add(
"@id", SqlDbType.Int, 4);
        selectCMD.Parameters[
0].Value = Request.QueryString["id"];
        SqlDataAdapter adapter
= new SqlDataAdapter(selectCMD.CommandText,conn.ConnectionString);
        DataSet customers
= new DataSet();
        adapter.Fill(customers);
        GridView1.DataSource
= customers;
        GridView1.DataBind();

SqlDataAdapter adapter = new SqlDataAdapter(selectCMD.CommandText,conn.ConnectionString);

你传给Adapter的是 "SELECT * FROM tbTest WHERE id =@id " 你并没有给Adapter传入@id对应的参数值。

如果你把整个selectCMD对象传给Adapter,这时候就是带上参数值的了。

http://space.cnblogs.com/question/6179/

 
2009年04月30日 星期四 8:43

一. 看看1433端口是否打开:

在dos窗口输入:netstat -a 回车,会列出本机用的端口列表,看看里面有没有1433,如果没有,说明没有打开,打了sp3补丁就会打开该端口

检查你的SQL有没有打sp3补丁,检查的方法是在查询分析器中运行:
select @@version
如果出来的版本号是8.00.760以下,则表明你未安装sp3的补丁,一般比较多的是8.00.194这是标准版的序列号码,说明没有打sp3补丁,如下:

Microsoft SQL Server 2000 - 8.00.194 (Intel X86) Aug 6 2000 00:57:48 Copyright (c) 1988-2000 Microsoft Corporation Personal Edition on Windows NT 5.1 (Build 2600: Service Pack 2)

号码对应表:

其中的8.00.194 就是SQL Server的版本和补丁号。对应关系如下:
8.00.194 -------SQL Server 2000 RTM
8.00.384 -------(SP1)
8.00.534 -------(SP2)
8.00.760 -------(SP3)
这样我们就能看到SQL Server的正确版本和补丁号了。

如果为8.00.194,说明没有打补丁。

sp3 下载地址:

http://download.microsoft.com/download/d/d/e/dde427eb-0296-4eac-a47c-d11a66b03816/chs_sql2ksp3.exe

拿迅雷下,快的很!

下下来以后,这是个自解包,解压,到那个目录里找到 setup.bat执行开始安装.

二. 下面看安装时候的问题:

补丁安装过程中常见问题
如果在安装补丁的时候遇到如下类似错误:
1、安装过程中出现“以前进行的程序创建了挂起的文件操作,运行安装程序前,必须重新启动”,请按照下面步骤解决:
a、重启机器,再进行安装,如果发现还有该错误,请按下面步骤
b、在开始->运行中输入regedit
c、到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 位置
d、选择文件->倒出,保存
e、在右边窗口右击PendingFileRenameOperations,选择删除,然后确认
f、重启安装,问题解决
如果还有同样问题,请检查其它注册表中是否有该值存在,如有请删掉。
2、在安装SQL Server SP3,有时候会出现:无论用windows认证还是混和认证,都出现密码错误的情况,这时查看临时目录下的sqlsp.out,会发现以下描述:
[TCP/IP Sockets]Specified SQL server not found.
[TCP/IP Sockets]ConnectionOpen (Connect()).
其实这是SQL Server SP3的一个小bug,在安装sp3的时候,没有监听tcp/ip端口,可以按照以下步骤进行:
1、打开SQL server客户器网络实用工具和服务器网络工具,确保启用的协议中包含name pipe,并且位置在第一位.
2、确保[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\ConnectTo]
"DSQUERY"="DBNETLIB".
如果没有,请自己建立
3、停止mssql.
4、进行安装.
这样就可以进行正确安装了。

[出处]http://blog.sina.com.cn/s/blog_5973733f0100cwom.html

 
2009年04月28日 星期二 11:25

这里存在的唯一问题就是,5个工作日,因为每个单位自身的休假日期与系统里的双休不同,而且还存在国家法定节假日等问题,所以需要自己建立一保存假日的表格.

-----自定义节假日

if exists (select * from dbo.sysobjects where id = object_id(N'[tb_Holiday]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [tb_Holiday]
GO

--定义节假日表
CREATE TABLE tb_Holiday(
HDate smalldatetime primary key clustered, --节假日期
Name nvarchar(50) not null) --假日名称
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_WorkDay]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_WorkDay]
GO

--计算两个日期之间的工作天数
CREATE FUNCTION f_WorkDay(
@dt_begin datetime, --计算的开始日期
@dt_end datetime --计算的结束日期
)RETURNS int
AS
BEGIN
IF @dt_begin>@dt_end
RETURN(DATEDIFF(Day,@dt_begin,@dt_end)
+1-(
SELECT COUNT(*) FROM tb_Holiday
WHERE HDate BETWEEN @dt_begin AND @dt_end))
RETURN(-(DATEDIFF(Day,@dt_end,@dt_begin)
+1-(
SELECT COUNT(*) FROM tb_Holiday
WHERE HDate BETWEEN @dt_end AND @dt_begin)))
END
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_WorkDayADD]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_WorkDayADD]
GO

--在指定日期上增加工作天数
CREATE FUNCTION f_WorkDayADD(
@date datetime, --基础日期
@workday int --要增加的工作日数
)RETURNS datetime
AS
BEGIN
IF @workday>0
WHILE @workday>0
SELECT @date=@date+@workday,@workday=count(*)
FROM tb_Holiday
WHERE HDate BETWEEN @date AND @date+@workday
ELSE
WHILE @workday<0
SELECT @date=@date+@workday,@workday=-count(*)
FROM tb_Holiday
WHERE HDate BETWEEN @date AND @date+@workday
RETURN(@date)
END  

http://topic.csdn.net/t/20060317/14/4621378.html

我自己在对上述的工作日累加函数运作时,与我单位的假日情况不太吻合,所以自行调整了下.

CREATE   FUNCTION   f_WorkDayADD(  
@date         smalldatetime,     --基础日期  
@workday   int               --要增加的工作日数  
)RETURNS   smalldatetime  
AS  
BEGIN  
return(SELECT @date+@workday+(select count(*)  
FROM   tb_Holiday  
WHERE   HDate   BETWEEN   @date   AND   @date+5)
)    
END

===============

实际运行举例说明:tb_Holiday数据表里保存的休假日为

2009-3-29 周日
2009-4-4   清明
2009-4-5   周日
2009-4-6   公司放假
2009-4-12 周日
2009-4-19 周日
2009-4-26 周日
2009-5-1   公司5.1放假
2009-5-2   公司5.1放假
2009-5-3   公司5.1放假
2009-5-10 周日

select dbo.f_WorkDayADD('2009-4-21','5') 得到2009-4-27

select dbo.f_WorkDayADD('2009-4-30','5') 得到2009-5-8

select dbo.f_WorkDayADD('2009-4-1','5')   得到2009-4-9

在.net页面里的代码

 
2009年04月25日 星期六 16:34
DateDiff DateDiff: SQL server函数
返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。
语法
DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])
DateDiff 函数语法中有下列命名参数:
部分 描述
interval 必要。字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔
Date1□date2 必要;Variant (Date)。计算中要用到的两个日期。
Firstdayofweek 可选。指定一个星期的第一天的常数。如果未予指定,则以星期日为第一天。
firstweekofyear 可选。指定一年的第一周的常数。如果未予指定,则以包含 1 月 1 日的星期为第一周。
设置
interval 参数的设定值如下:
设置 描述
yyyy 年
q 季
m 月
y 一年的日数
d 日
w 一周的日数
ww 周
h 时
n 分钟
s 秒
firstdayofweek 参数的设定值如下:
常数 值 描述
vbUseSystem 0 使用 NLS API 设置。
vbSunday 1 星期日(缺省值)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
常数 值 描述
vbUseSystem 0 用 NLS API 设置。
vbFirstJan1 1 从包含 1 月 1 日的星期开始(缺省值)。
vbFirstFourDays 2 从第一个其大半个星期在新的一年的一周开始。
vbFirstFullWeek 3 从第一个无跨年度的星期开始。
说明
DateDiff 函数可用来决定两个日期之间所指定的时间间隔数目。例如,可以使用 DateDiff 来计算两个日期之间相隔几日,或计算从今天起到年底还有多少个星期。
为了计算 date1 与 date2 相差的日数,可以使用“一年的日数”(y) 或“日”(d)。当 interval 是“一周的日数”(w) 时,DateDiff 返回两日期间的周数。如果 date1 是星期一,DateDiff 计算到 date2 为止的星期一的个数。这个数包含 date2 但不包含 date1。不过,如果 interval 是“周”(ww),则 DateDiff 函数返回两日期间的“日历周”数。由计算 date1 与 date2 之间星期日的个数而得。如果 date2 刚好是星期日,则 date2 也会被加进 DateDiff 的计数结果中;但不论 date1 是否为星期日,都不将它算进去。
如果 date1 比 date2 来得晚,则 DateDiff 函数的返回值为负数。
firstdayofweek 参数会影响使用时间间隔符号 “W” 或 “WW” 计算的结果。
如果 date1 或 date2 是日期文字,则指定的年份成为该日期的固定部分。但是,如果 date1 或 date2 用双引号 (" ") 括起来,且年份略而不提,则在每次计算表达式 date1 或 date2 时,当前年份都会插入到代码之中。这样就可以书写适用于不同年份的程序代码。
在计算 12 月 31 日和来年的 1 月 1 日的年份差时,DateDiff 返回 1 表示相差一个年份,虽然实际上只相差一天而已。
示例
此示例确定在 pubs 数据库中标题发布日期和当前日期间的天数。
USE pubsGOSELECT DATEDIFF(day, pubdate, getdate()) AS no_of_daysFROM titlesGO
DATEDIFF函数在Access和MSSQL中的使用区别
ACCESS中用法:DATEDIFF('day', pubdate, Now())
MSSQL中用法:DATEDIFF(day, pubdate, getdate())
 
2009年03月07日 星期六 14:15

1.右击SQL Server 2000实例下的“数据库”文件夹。就是master等数据库上一级的那个图标。选择“所有任务”,“还原数据库”
2.在“还原为数据库”中填上你希望恢复的数据库名字。这个名字应该与你的源码中使用的数据库名字一致。
3.在弹出的对话框中,选“从设备”
4.点击“选择设备”
5.点击“添加”
6.点击“文件名”文本框右侧的“...”按钮,选中你的“.BAK”文件,并点击确定回到“选择还原设备”对话框。
7.点击确定回到“还原数据库”对话框。
8.点击“选项”选项卡
9.将所有“移至物理文件名”下面的路径,改为你想还原后的将数据库文件保存到的路径。如果你不希望改变,可以直接点击确定。这时便恢复成功了。

====================================

具体在操作过程中需要注意一个问题,就是如果你数据库里已有其他数据库了,当你需要恢复.bak时,先建立一个空数据库,然后再在你新建的数据库上操作“所有任务”-“还原数据库”,及上面第2点开始的后续步骤。这样做是为了避免,将你有用的数据给覆盖了

 
2009年02月13日 星期五 10:43
你试试1、右击桌面我的电脑,选择“管理”,双击打开的“计算机管理”对话框中的“本地用户和组”下的“组” 在右边的窗口中双击“Remote Desktop Users”组,在打开的“Remote Desktop Users”属性对话框中 单击添加,在打开的“添加用户”对话框中单击“高级”,再单击“立即查找”按钮,在“搜索”结果中 双击ASPNET(如果是IIS6.0“NETWOR SERVERCE”)再点击两次确定完成添加“用户”

2、单击“开始”--“所有程序”--“Microsoft SQL Server”--“企业管理器”在打开的“控制台根目录” 选择相应的数据库,右击该数据库的中的“用户”,选择“新建数据库用户”。在“新建用户”对话 框中点击“登陆名”右侧的下拉列表框,选择“新建”,打开“新建登陆对话框”。点击名称右侧的 省略号按钮,在打开的对话框中将“列出的名称”中选择“本机的名称”,再在下面的名称框中选定“Remote Desktop Users”,然后点击“成员”按钮,双击 ASPNET(如果是IIS6.0“NETWOR SERVERCE”),然后点击确定,在“新建登陆对话 框”中的默认设置的“数据库”选项中选择相应的数据库名称,再在“数据库访问”选项下勾选相应 的数据库点击确定,完成将ASP.net默认的匿名用户添加到SQL
 
2008年12月24日 星期三 17:29

点数据表,然后右键-所有任务-管理触发器 里面就可以进行新建 或者 查看已建好的出发器了

 
2008年11月18日 星期二 9:06
在安装组件时,选择"全文索引",点击下一步之后就会弹出一个提示,说排序查找的时候,按照什么顺序,这时要选择"二进制",因为在进行image保存时,是将其保存为Binary格式的.
 
2008年11月16日 星期日 19:05

我们以MS SQL Server 2000为例,说明如何建立全文索引。
     1、启动全文索引。在Microsoft SQL Server >> SQL Server 组 >> (LOCAL) (Windows NT) >> 支持服务 >> 全文检索 >> 右键菜单元 >> 启动;
     2、对数据库建立全文目录。在Microsoft SQL Server >> SQL Server 组 >> (LOCAL) (Windows NT) >> 数据库 >> 全文目录 >> 右建菜单 >> 新建全文目录;
     3、对所要建立全文索引的表建立全文索引。在Microsoft SQL Server >> SQL Server 组 >> (LOCAL) (Windows NT) >> 数据库 >> 你的数据库名 >> 表 >> 双击 >> 在右侧列表中选择要建立全文索引的数据表 >> 右建菜单 >> 全文索引表 >> 在表上定义全文索引 , 按向导,选择要建立全文索引的字段和全文目录,完成操作。注意,你的数据表必须有主键,否则会出现如下错误提示:“所选表中没有在不允许 NULL 的列上的唯一单个列索引”。
     4、对上一步建立全文索引时选择的全文目录进行填充。在Microsoft SQL Server >> SQL Server 组 >> (LOCAL) (Windows NT) >> 数据库 >> 全文目录 >> 双击 >> 在右侧列表中选择全文目录 >> 右建菜单 >> 启动完全填充。注意,填充是需要时间的。

     这样,给数据表建立全文索引之后我们就可以使用CONTAINS来检索了:

Select * From T1 Where Title Like '%迅雷%' OR CONTAINS(Body, '%迅雷%')

     试一试查询速度,第一次查询速度还是很慢,当查询驻入内存之后,查询就快了。已免强可以接受。但第一次查询速度慢的问题还需要解决,并且以后的查询离百度搜索速度还有很大距离。就是说还有很多地方可以完善的。

代码式构建全文索引方法
http://blog.csdn.net/lg_lin/archive/2006/05/11/723079.aspx

K3一位开发人员
http://community.kingdee.com/pages/kitty2008cn/default.aspx

全文索引image列,全公略!
http://topic.csdn.net/t/20030330/00/1594455.html

建立SQL全文索引提升搜索速度(是从企业管理器里创建的)
http://www.gg580.com/it/spider/fily_20070622173928.html

 
2008年11月16日 星期日 18:28

说到SQL里这个功能,也许大家用的并不怎么多,但是这个功能可与搜索引擎有关,据说可以做成类似Yahoo里的搜索功能。

我的是SQL Server 2000版本,首先把服务器里的任何服务全都关闭了,然后再用安装盘安装,选择对当前实例添加组件,选择全文索引组件,最后安装。

安装好之后,开启服务器选择Microsoft Search和SQL Server Agent 两项全都处于启动状态。

 
   
 
 
文章存档
 
     
 
最新文章评论
  

无代码更新sharpointlist http://www.xue5.com/WebDev/Site/512382.html
 

http://www.cnblogs.com/eleanore0728/articles/1216091.html
 

Kaneboy的签名: "玩SharePoint就像是魔术,你不知道它为什么工作,也不知道它为什么不
 

谢谢分享……
 

回复极黑的眼:我这也是给你照自己的脸,看清你自己是副什么德性。
   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu