升级到SQL Server 2005的常见问题解答(四)

日期: 2008-07-07 作者:Adam Machanic etc. 来源:TechTarget中国 英文

8.我怎么为一个SQL Server数据库创建用户名和密码?   我创建了一个SQL Server 2005数据库,我计划用一个用户名和密码来保护它。我不清楚这要怎么做。我怎样用我的新数据库的安全对象为它建立一个安全系统?   这有一篇Steve Jones写的很好的文章,它会让你从SQL用户和登录开始:开始SQL Server——登录和用户。   —Steven Andres,安全专家   9.我可以同时运行SQL 2000和SQL 2005实例吗?   你可以在同一台机器上运行SQL 2000和SQL 2005实例吗?有什么问题是和这两个实例运行在一起相关联的吗?   是的,他们可以运行在……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

8.我怎么为一个SQL Server数据库创建用户名和密码?

  我创建了一个SQL Server 2005数据库,我计划用一个用户名和密码来保护它。我不清楚这要怎么做。我怎样用我的新数据库的安全对象为它建立一个安全系统?

  这有一篇Steve Jones写的很好的文章,它会让你从SQL用户和登录开始:开始SQL Server——登录和用户。

  —Steven Andres,安全专家

  9.我可以同时运行SQL 2000和SQL 2005实例吗?

  你可以在同一台机器上运行SQL 2000和SQL 2005实例吗?有什么问题是和这两个实例运行在一起相关联的吗?

  是的,他们可以运行在一起。我看过的唯一问题是当2000在2005之后安装的,因为共享dll被旧的替代了而出现了一些问题。安装另一个2005的实例看起来总是可以解决这一问题。

  —Greg Low,开发专家

  10.你能提供一些SQL Server 2005升级问题的例子吗?

  从SQL Server 2000移植到SQL Server 2005时可能会遇到什么问题?在移植过程中所应该采取的预防措施都有哪些?

  在做移植时你可能会遇到很多问题——而在这里很难解释所有的问题。幸运的是,微软已经发布了一个工具来帮助移植。你可以在我的文章“使用SQL Server 2005升级顾问减少升级未知数”里读到所有关于升级的问题。

  要知道更多的关于移植的信息,我邀请你听我的webcast升级到SQL Server 2005:你必须知道的事情,在其中我分享了许多提示以帮助确保顺利的转变到新的版本。

  —Adam Machanic,SQL Server 2005专家

  11. 在SQL Server 2005中会出现什么存储过程并发问题?

  我在SQL Server 2005遇到了一个并发问题。在我卖票的公交车上有一些免费的座位。在插入一个售出的票之前我要检查是否还留有免费的座位。我的存储过程像下面所示:

  create PROCEDURE add_ticket -- parameters DECLARE free_seats int BEGIN TRANSACTION select free_seats = count(*) FROM tickets where seat_is_not_taken IF free_seats <> 0 insert INTO tickets VALUES(...) -- some other statements END TRANSACTION

  问题是两个进程可以并发的读取免费票的数量,并都可以保留一张票,即使已经没有免费票了。我需要一种方法使运行add_ticket存储过程的进程在没有插入一张新的票之前,其它进程被阻止读取免费票的数量。SET TRANSACTION ISOLATION LEVEL在这种情况下不起作用,对吧?

  你是对的;一个更高的隔离级别不能帮助保证多个读者不会同时读取同一行数据。不过,你可以采取几种方式来完成这个工作。例如,你可以分配给每一个座位一个唯一的标识(意思是,一个唯一的键,没有必要是全局统一标识符),并创建一个表储存已经被占用的座位。在这个表上加一个UNIQUE约束,这样就能保证一个座位不能插入两次。

  我认为一个更有趣的选择可能是使用SQL Service Broker。你可以为每一辆公交车建立一个会话,将这个会话句柄存储在一个表里,读者在作接受之前可以参考这个表。通过这种方法,读者可以简单的按其需要接受这个信息(在进程中,保留汽车上的座位)。Service Broker会确保没有信息会被接受两次,这意味着你不会再遇到任何并发问题。

  —Adam Machanic,SQL Server 2005专家

  12. SQL Server 2005数据库可以移植回SQL Server 2000吗?

  在移植到SQL Server 2005的过程中,许多组织仍然会被要求支持SQL Server 2000安装。结果,一个普遍的要求是能够反向移植:将数据库从SQL Server 2005移植会SQL Server 2000。

  不幸的是,这并不是那么简单。从SQL Server 2005实例备份的数据库不能恢复到SQL Server 2000实例中。分离的SQL Server 2005数据库也不能重新绑定到SQL Server 2000中。

  因为不支持备份/恢复和分离/绑定,对于移动数据从SQL Server 2005到SQL Server 2000的唯一可用的方法是基于复制数据。数据和schemas可以用一个工具例如Red Gate的SQL Packager来跟踪,脚本可以应用于SQL Server 2000上。另一个选择是使用像DTS或SSIS之类的工具,这些工具都包含数据复制向导。

  然而,复制数据和schema是一个潜在的麻烦经历。SQL Server 2005支持许多SQL Server 2000种没有的特性,而这在交叉移植过程中会引起问题。在试图为两种平台开发解决方案时谨慎是很重要的,我的建议是开发应该采用SQL Server 2000来完成,而代码和数据应该移植到SQL Server 2005中。

      —Adam Machanic,SQL Server 2005专家

相关推荐