网络编程
位置:首页>> 网络编程>> 数据库>> SQL Server开发过程中的的常见问题总结

SQL Server开发过程中的的常见问题总结

作者:璞玉  发布时间:2009-01-06 11:16:00 

标签:

在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

0
投稿

猜你喜欢

  •   基于ASP技术开发Internet/Intranet上的MIS系统是非常方便的,首先是它借用了ADO技术和概念,同时
  • asp之家补充两点,以让大家看的更明白:一.什么是GUID?由于水平有限在看到这篇文章时,我并不了解什么是GUID,为了看懂文章当然先请教一
  • 本文系统的对HTTP Headers进行了简明易懂的阐述,我仅稍作笔记。什么是HTTP HeadersHTTP是“Hypertext Tra
  • 周六。据闻北服美女甚多,于是应邀去做了一个关于UED的讲座。人不多,讲的很乱,但大家听的很认真,欣慰。讲完之后回答了很多关于社区、搜索、设计
  • 以下的文章主要是介绍SQL Server数据库与其实际应用元数据,我前两天在相关网站看见SQL Server数据库与其实际应用元数据的资料,
  • 在网上我们常常看见一些注册表单的输入框部分并不是我们常见的矩形框,而是一条细线,很多朋友对此很感兴趣。其实要实现这样的效果并不困难,我们只要
  •     Check In/Out功能简介:该功能是专门针对多用户管理而预设的。即多用户使用多帐号管理同一站点。
  • 在mysql安装目录的bin下, 运行mysql --install MYSQL5查看服务中, 会多一个MYSQL5的服务XAMPP的控制面
  • 上一小节讲解了行高与单行纯文字的垂直居中,而如果行内含有图片和文字,在浏览器内浏览时,读者可以发现文字和图片在垂直方向并不是沿中线居中,而是
  • 做项目的时候,一位同事导数据的时候,不小心把一个表中的数据全都搞重了,也就是说,这个表里所有的记录都有一条重复的。这个表的数据是千万级的,而
  • 在团队意见PK中,运用对方的知识背景说服对方,这就是技术性击倒。这样通常能把对方驳得哑口无言,我经常被这样击倒,甚至觉得怎么那么多牛逼的设计
  • 这段时间在处理SQL server 2000 SP4补丁打不上的问题上花了不少时间,回头想想应该总结一下:系统说明:dell1800服务器,
  • 一般我们是利用Session对象来防止通过“刷新”增加计数器的访问量的,看看下面的做法;<%If IsEmpty(Sessi
  • 这是一个access较为豪华的包装范例,他调用了flash的流媒体控件,利用flash的交互与通信功能,借以达到了我们装扮软件的目的。fla
  • SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
  • position属性可以让你让你随意控制一个特定元素在浏览器何处以及如何显示。比方说我们用position:fixed 让一个图片显示在浏览
  • YSlow是yahoo美国开发的一个页面评分插件,非常的棒,从中我们可以看出我们页面上的很多不足,并且可以知道我们改怎么却改进和优化。仔细研
  • PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的
  • 我的朋友没在服务器上设置DSN,可他一样访问数据库,他是怎样做到的? 其实,只要我们知道数据库文件名(比如Access、Parad
  • Microsoft SQL Server 2005 Mobile Edition 3.0 (SQL Server Mobile) 支持两种与
手机版 网络编程 asp之家 www.aspxhome.com