WEB开发网
开发学院数据库MSSQL Server 两个版本DB的比较和更多的SQL 阅读

两个版本DB的比较和更多的SQL

 2007-11-11 13:06:57 来源:WEB开发网   
核心提示:开机后鼠标不动怎么办SQL语言基本语句介绍硬盘变成raw格式怎么办巧妙清除Windows 2000/XP登录密码Excel密码保护的解除方法与解除原理3dmax不锈钢金属材质的制作方法Photoshop制作VONAI风格非主流照片效Photoshop 抠图实例-头发抠图如何找回qq密码如何启用主板上的1394接口我想知
  • 开机后鼠标不动怎么办
  • SQL语言基本语句介绍
  • 硬盘变成raw格式怎么办
  • 巧妙清除Windows 2000/XP登录密码
  • Excel密码保护的解除方法与解除原理
  • 3dmax不锈钢金属材质的制作方法
  • Photoshop制作VONAI风格非主流照片效
  • Photoshop 抠图实例-头发抠图
  • 如何找回qq密码
  • 如何启用主板上的1394接口

我想知道怎样使我的膝上型电脑尽可能安全,因为我要频繁地走访客户。我正在使用的是Windows® XP。

除了参考 Windows XP Security Guide 和 Threats and Countermeasures Guide 以外。你还可以考虑物理安全并考虑使用以下的几种方法:

  • BIOS 密码
  • 使用Windows XP加密文件系统(EFS)或者第三方软件的文件系统加密
  • 数据备份
  • 物理保护—比如: 当你的电脑经过安检时看好它,同时将在公共场合使用电脑的时间减到最少。
  有关对膝上型电脑进行物理保护的信息也是可以找得到的。例如:第三方跟踪软件,象 ztrace.com 生产的一款软件可以跟踪被盗膝上型电脑的位置。

如果你使用的是BIOS密码,记住系统常常包括销售商之间重置过的密码 ,这些密码广泛流传,并且很容易用公开的方法绕过(卸下电池和使用短路手段等),你应该明确地权衡使用这些密码的利弊。但不管怎么说,BIOS密码可以换取时间来修改密码, 挂失信用卡,禁用帐户,评估损失等等,甚至可以防止黑客获取对个人信息的访问权。在许多系统里,重置BIOS可能破坏或引发抗篡改措施,作为 附带的指示机制,这也许会很有用。BIOS密码确实是一道安全防线,但是它们无法阻止那些知识渊博的黑客。

文件加密同样也有它的优点和缺点。假如硬盘或者膝上型电脑已经被盗,那么分分钟便能够获得对整个 NTFS 文件的访问。NTFS安全是被设计用来保护OS里的和经由网络的文件,当某人已经 盗取硬盘并且决心获取数据时,它是起不到保护文件的作用的。EFS 或者其它类似的技术是被设计用来阻止手中磁盘里的数据被偷窃,但是务必要理解 EFS 的含意。有时在没有备份的情况下启用 EFS,然后又要重新安装操作系统时。文件将会变得完全的不可访问。最 具讽刺意味的是人们对他们最在乎的文件启用 EFS,但最后他们却失去了这些文件。

使用 Windows XP 安全指南中关于威胁和对策的指导来评估安全威胁,并使用该安全指南来学习实施保护的工具和机制。为了防止从各种网络途径对你的机器的未授权访问,Windows XP 含 有Internet Connection Firewall ( 即 IFC,也就是因特网连接防火墙) 软件,你可以用它来限制 在你的机器和网络之间传输的信息类型,它是一个非常重要的安全工具,尤其是如果你要经常连接到不熟悉的网络上的话(不管是无线的还是有线的)。更多详细的信息请参见 Use the Internet Connection Firewall。记住,尽可能使用软件和硬件防火墙。

我怎样才能够设计出一个脚本创造对两个数据库的自动对较,主要是检查可能在结构 、键、索引、表名上发生的变化? 用 VBScript 或者其它方法如何达到此目的,请指教?

有篇深入的文章 Compare sql server(WINDOWS平台上强大的数据库平台) Databases with sp_CompareDB 描述了创建一个存储过程 的步骤,他实现了对两个数据库间包括一致性约束、索引、存储过程等的对比。

假如你想确定数据库中所有的行和列都完全相同,只需对每一个服务器上的表执行sp_table_validation 并比较校验位。这个方法被用于复制以确定 各个表在发布者和订阅者之间是同步的: XEC sp_table_validation
  @Table = ''Authors'',
  @rowcount_only = 2, -- rowcount and checksum
  @full_or_fast = 2 -- fast count  
  结果在预料之中,Authors 表的记录行数( rowcount )为 23 和校验位( checksum )是 -1159171265。

为了有趣一点,试运行下面的代码然后重新运行 sp_table_validation 来比较校验位,看看它们是不是不同了:

update authors
set au_fname = ''John''
where au_fname = ''Johnson''
  假如你仅仅对比较两个数据库之间的大纲( schema )感兴趣,你可以将两个写出来,用一个文件差异比较工具(例如:WinDiff)来对比它们。Sp_diffdb 是《The Guru''s Guide to sql server(WINDOWS平台上强大的数据库平台) Stored Procedures, xml(标准化越来越近了), and HTML 》(Addison-Wesley, 2001)中的一个例子过程,使用这个方法和Visual SourceSafe® 中的高级文件差异检验器,sp_OA 是个扩展的过程,用来实现整个过程的自动化。

有几个包括 Red Gate 在内的第三方大纲级比较工具软件。Red Gate 也 具备用于两个SQL服务器的数据级比较工具。你也可以试一下 DBGhost。

当我在 ADO.NET 中使用 DataSets 或者带有表达式列的强 类型 DataSets 时,我在没有获得一个ReadOnlyException 的情况下更新不了我的表。我在更新之前将表达式列删除然后再次将它作为一个工作区加上去。有更好的方法来做这个吗?

你可以创造一个用户自定义的 UpdateCommand,只更新应该被更新的列。Expression 列是不包括在这个更新命令中的。

另一个工作区仅仅捕获数据适配器的 RowUpdated 事件并检查是否发生错误。加入答案是‘是’并且这个错误就是 ReadOnlyException 的话,那么就忽略它。不幸的是,异常的出现和处理招致了高性能代价。别把你的解决方案建立在捕获每一行更新出现的异常这个思路上。在更新之前删除一列也并不明智,但是它并不会像捕获异常 那样伤害你的程序的性能。

你可以在更新之后使用 DataAdapter (数据适配器)的 ContinueUpdateOnError 属性并在更新之后遍历 DataSet 记录行来检查行中的错误。 文档上 如是说:ContinueUpdateOnError 获取或者设置一个值用来说明在进行行更新期间,发生一个错误的时候是否产生一个异常。

属性值为true的时候是继续更新而不生成一个异常,否则是false。默认值是false。假如ContinueUpdateOnError 被设置成 true,在 某一行更新期间,如果发生错误将不会抛出任何异常。行更新将会被跳过,并且错误信息将被写入该行的 RowError 属性里。DataAdapter(数据适配器)继续后续行的更新。假如 ContinueUpdateOnError 被设置成 false,行更新期间,如果发生 错误,则异常将会被抛出。 

我想通过编程的方法创建一个Jet 4.0 数据库并定义一些表。 我好象必须用用 ADOX 来创建这个数据库,然后我再用 ADO.NET 来发布 SQL 数据定义语言(DDL:SQL Data Definition Language)以便创建表。这样做是否正确?或者我能在 ADOX 之前向 Jet 发布实际的 CREATE DATABASE SQL DDL吗?

你确实需要使用除了纯粹的 ADO.NET 外的别的一些东西来创建一个新的 Jet 数据库,,例如 ADOX,它是 ADO 对象模型的扩展(参见 ADOX API Reference ),除非你用类似 SELECT INTO 命令从一个已经存在的数据库中创建一个新的数据库。

知识库文章 317867:“Create a Microsoft Access Database Using ADOX and Visual Basic”声明了只使用 ADO 是不能够创建 Jet 数据库的, 同时示范了所需的 ADOX 代码。

有什么方法能够在连接串中指定一个 SQL 服务器实例正在侦听的端口号吗? 我想要连接的服务器侦听端口并不在 1433 上。有关着方面的内容文档中提到得很少。

这是一个普通的问题。答案就是使用连接字符串:"server=tcp:servername,portnumber"。

什么时候 SqlDataReader 从网络上获取实际字节流? 下面是我想象的情形:

  1. 运行一个存储程序返回带图象列和数据记录行的结果集,所有的行和列都具备有效的图象数据(非空)
  2. 使用 SqlDataReader.Read 将数据移到第一行
  3. 使用 SqlDataReader.Read 将数据移到第二行
  4. 在图象列上调用 SqlDataReader.GetBytes

第一条记录的任何图象列字节数据是否在第二步被网络上获取? 我从哪里能找到有关如何使用 SqlDataReader 读取图象数据的详细信息? 

SqlClient 并不直接跟物理网络通信。在 SqlClient 使用数据之前,是由网络服务 APIs 从网络上或缓冲中获取数据的。从SqlClient 的角度来看,你只是简单的从网络中获得一个你需要的数据包。在第二次读时(第三步),你需要从当前的域移动到下一行的开头。这可能包括从网络服务API 读更多的数据包。

为了保证只读取你需要的图象列字节数据,你应当只在你需要此数据时才修改你的图像列查询设计。否则,将这个列留在你的查询之外。换言之,假设你查询数据时它将被 拉入底层。这就是 sql server(WINDOWS平台上强大的数据库平台)™ 默认游标工作的根本方式。当你遍历记录的时所有的数据都被返回。它听起来你应该尽量避免这种情况。

我想将一个位置中间接口文件(flat file)转化成一个 DataSet (最好是强类型的).。我首先考虑将中间接口文件转化为 xml(标准化越来越近了) 文档,然后将这个xml(标准化越来越近了) 文档加载到某个 DataSet 中,该 DataSet 具备与结果 xml(标准化越来越近了) 文档匹配的大纲。

为了生成这个中间接口文件,我需要在xml(标准化越来越近了)文件中描述那个文件的字段 (如:名字,位置等等)。这将给我两个元数据文件:一个是将中间接口文件转化为 xml(标准化越来越近了) 时使用的, 另一个是描述 DataSet 的 XSD 文件。

我想添加自定义的属性到 XSD (每一个域的 startPos 和 endPos ) 以便我能将 XSD 用于两个目的。这个 XSD 看起来象 Figure 1 所示的那样。这样,我只需维护一个文件。我手动解析这个 XSD 文件,并在将中间接口文件转化为 xml(标准化越来越近了) 的过程中使用它,同时用 XSD 文件( 像往常一样 )生成 DataSet。我怎样才能增加这些自定义的属性呢?

假如你想指定一个大纲作为起点,你可以将中间接口文件导入或链入某个 Jet 数据库,然后使用 Visual Studio® .NET 的工具来生成大刚和类型化的 DataSet 类文件。

虽然 Jet OLE DB 提供者借助 Text ISAM 驱动可以读取文本文件,当你使用 Jet OLE DB 提供者处理 .mdb 以外的文件时,Visual Studio .NET 工具不工作。(参见知识库文章 316831:"PRB: Cannot Configure Data Connection to Excel Files in Visual Studio .NET,", 和 811241:"Info: Visual Studio .NET Designer Tool Supports Specific OLE DB Providers," ) 你 无法创建可视数据连接或者使用DataAdapter 配置向导处理任何 Jet 只有通过 ISAM 驱动支持的文件类型。

如有任何问题请将问题和建议发送到 webqa@microsoft.com.


感谢下面的微软公司开发人员在技术上给予的专家意见:Pete Baxter, Jeffrey Brendecke, Kurt Dillard, Roberto Di Pietro, Bart Duncan, Pablo Fermandois, Fredrik Gunne, Ken Henderson, Michael Howard, Salome Jacob, Jesper Johansson, Wes Johns, Oren Kendel, Douglas Laudenschlager, Adam Lydick, Oliver Pillwein, Angel Saenz-Badillos, Ben Smith, Stephane St-Michel, Klaus Sobel, Chip Switzer, David Switzer, Mario Szpuszta, Paul West, Frank Wiemer, Lothar Zeitler.

本文出自 MSDN Magazine 的 March 2004 期刊,可通过当地 报摊获得,或者最好是 订阅

Figure 1

<?xml(标准化越来越近了) version="1.0" encoding="utf-8" ?>
<xs:schema id="Dataset1" targetNamespace="http://tempuri.org/Dataset1.xsd"
elementFormDefault="qualified" attributeFormDefault="qualified"
xml(标准化越来越近了)ns="http://tempuri.org/Dataset1.xsd" xml(标准化越来越近了)ns:mstns="http://tempuri.org/Dataset1.xsd"
xml(标准化越来越近了)ns:xs="http://www.w3.org/2001/xml(标准化越来越近了)Schema" xml(标准化越来越近了)ns:msdata="urn:schemas-
microsoft-com:xml(标准化越来越近了)-msdata">
<xs:element name="Dataset1" msdata:IsDataSet="true">
 <xs:complexType>
  <xs:choice maxOccurs="unbounded">
  <xs:element name="SomeData">
   <xs:complexType>
   <xs:sequence>
    <xs:element name="Name" type="xs:string" minOccurs="0" startPos="0"
     endPos="10"/>
    <xs:element name="Address" type="xs:string" minOccurs="0"
     startPos="10" endPos="22"/>
    <xs:element name="PostalCode" type="xs:int" minOccurs="0"
     startPos="22" endPos="26"/>
   </xs:sequence>
   </xs:complexType> </xs:element> </xs:choice> </xs:complexType>
</xs:element>
</xs:schema>
Figure 1 XSD

1 2 3 4 5 6  下一页

Tags:两个 DB

编辑录入:coldstar [复制链接] [打 印]
赞助商链接