sql中MSDTC是什么呀,为什么使用事务时提示msdtc不可用

dd922 2003-08-30 09:02:21
我在使用事务时提示我msdtc不可用,why。需要说明一点:使用一般的插入操作可以,但是我使用的是从excel中查出数据后插入到sql数据库,与这个由关系么
...全文
210 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟子E章 2003-08-30
  • 打赏
  • 举报
回复
http://www.588188.com/netbook/sqlserver2000/trblsql/tr_syserrors1a_20ah.htm




服务器 ''%1!'' 上的 MS DTC 不可用。

解释
处理显式或隐性事务内的 INSERT、UPDATE 或 DELETE 语句时会出现该错误。该错误通常表明 MSDTC 服务未在本地服务器上运行。显式或隐性事务中的数据修改语句要求运行 MSDTC 服务以及提供程序对分布式事务的支持。

对策
使用 SQL Server 服务管理器验证 MSDTC 服务是否已在服务器上启动。有关更多信息,请参见 Microsoft 分布式事务处理协调器文档。

孟子E章 2003-08-30
  • 打赏
  • 举报
回复
Microsoft Distributed Transaction Coordinator

http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/q294/2/09.asp&NoWebContent=1
Microsoft SQL Server 2005 Express Edition SQL Server 文档小组无法回答技术支持问题,但是欢迎您对本自述文档提出建议和意见。您可以使用提供的链接快速、直接地发送电子邮件反馈。请使用英语发送您的反馈信息。 若要通过邮件提交有关本文档的反馈信息,请单击此处:提交反馈。 目录 1.0 简介 2.0 下载并安装 SQL Server Express 2.1 .NET Framework 2.0 2.2 SQL Server Express 2.3 SQL Server Express 的管理工具 2.4 访问安装文档 2.5 SQL Server 2005 自述文件 3.0 安装问题 4.0 其他信息 4.1 服务帐户和网络协议 4.2 用户实例功能 4.3 WMI 提供程序和用户实例功能 4.4 联机丛书 4.5 获取 SQL Server Express 帮助 4.6 新闻组支持 4.7 提供有关 SQL Server Express 的反馈 5.0 数据库引擎 6.0 复制 [顶部] 1.0 简介 Microsoft SQL Server 2005 Express Edition (SQL Server Express) 是一个免费且易于使用SQL Server 2005 版本,它替换了 Microsoft Desktop Engine (MSDE)。与 Microsoft Visual Studio 2005 集成之后,SQL Server Express 可以轻松的开发功能强大且安全的数据驱动应用程序,并允许快速部署这些应用程序。SQL Server Express 可以根据协议重新进行发布,并可作为客户端数据库以及基本服务器数据库使用SQL Server Express 是独立软件供应商 (ISV)、服务器用户、非专业开发人员、Web 应用程序开发人员、网站宿主以及客户端应用程序编程爱好者的理想之选。 未及包括在本自述文件的任何有关 SQL Server Express 的信息都将发布到 Microsoft 知识库文章 907284 。 有关使用 SQL Server Express 新闻组提供反馈的信息,请参阅 4.6 新闻组支持部分。 [顶部] 2.0 下载并安装 SQL Server Express 本节介绍有关安装 .NET Framework 2.0、SQL Server Express 以及可用于连接到 SQL Server Express 的工具的信息。 2.1 .NET Framework 2.0 在安装 SQL Server Express 之前,必须安装 .NET Framework 2.0。 SQL Server Express 依赖于特定 2.0 版本的 .NET Framework。如果您已安装了其他版本的 .NET Framework,则 SQL Server Express 安装可能会在运行发生意外情况。您可以从此 Microsoft 网站下载 .NET Framework 2.0。 注意: .NET Framework 2.0 由 Microsoft Visual Studio 2005 和所有版本的 SQL Server 2005 自动安装。 [顶部] 2.2 SQL Server Express SQL Server Express 可从此 Microsoft 网站下载获得。 注意: 下载和提取产品,请务必按照下载站点提供的说明进行操作。 安装 SQL Server Express 之后,请在命令提示符下使用以下命令连接到 SQL Server Express: sqlcmd -S Server\Instance 其 Server 是计算机名称,Instance 是要连接到的实例名称。如果已在安装过程使用了默认的命名实例,则将实例指定为“SQLExpress”。 [顶部] 2.3 管理 SQL Server Express 的工具 有关连接到 SQL Server Express 数据库并进行管理的信息,请参阅 Microsoft 知识库文章 907716。 [顶部] 2.4 访问安装文档 SQL Server Express 的安装要求文档概述了硬件和软件要求。 [顶部] 2.5 SQL Server 2005 自述文件 SQL Server 2005 自述文件可以从此 Microsoft 网站在线获取。 注意: 未及包括在本自述文件的任何有关 SQL Server 2005 和 SQL Server Express 的信息都将发布到 Microsoft 知识库文章 907284 。 [顶部] 3.0 安装问题 本部分详细介绍此版本的安装问题。 3.1 现有的 SQL 本机客户端安装可能导致安装失败 安装可能失败并回滚,同显示以下错误消息:“找不到产品 Microsoft SQL 本机客户端的安装包。请使用安装包 sqlncli.msi 的有效副本重试安装。”若要解决此问题,请使用“添加或删除程序”卸载 SQL 本机客户端。对于群集,请从所有节点卸载 SQL 本机客户端。然后,再次运行 SQL Server 安装程序。 [顶部] 3.2 系统配置检查器失败并显示“性能监视器计数器检查失败”消息 在开始安装 SQL Server 之前,系统配置检查器 (SCC) 会验证性能监视器计数器注册表项的值。如果 SCC 无法验证现有的注册表项,或者 SCC 无法运行 Lodctr.exe 系统程序,则 SCC 检查会失败,并且安装程序会被阻止。若要完成安装,您必须手动增加注册表项。 注意: 如果注册表编辑不当,则可能会导致严重的问题并可能需要您重新安装操作系统。Microsoft 不保证可以解决因注册表编辑不当而导致的问题。在编辑注册表之前,请备份所有重要数据。有关如何备份、恢复和编辑注册表的信息,请参阅 Microsoft 知识库文章 256986。 若要手动增加计数器注册表项,请执行下列操作: 在任务栏,依次单击“开始”和“运行”,在“运行”文本框键入 regedit.exe,再单击“确定”。 导航到以下注册表项:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib]。查找下列项: "Last Counter"=dword:00000ed4 (5276) "Last Help"=dword:00000ed5 (5277) 验证值。上一步 (5276) 的 Last Counter 值必须与以下注册表项内 Perflib\009 Counter 项的最大值相等,上一步 (5277) 的 Last Help 值必须与以下注册表项内 Perflib\009 Help 项的最大值相等:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009]。 注意: “009”是用于英语(美国)的项。 如有必要,请修改 \Perflib 项 Last Counter 和 Last Help 的值。在右窗格,右键单击 Last Counter 或 Last Help,选择“修改”,单击 Base = Decimal,在“值”数据字段设置值,再单击“确定”。如有必要,请对其他项重复此操作,然后关闭注册表编辑器。 再次运行 SQL Server 2005 Express Edition 安装程序。 [顶部] 3.3 SQL Server Express 联机丛书包含关于操作系统支持的错误信息。 SQL Server Express 联机丛书的“硬件和软件要求 (SQL Server Express)”主题没有提供操作系统的精确列表。SQL Server Express 支持下列操作系统。 Windows Server 2003 SP1 Windows Server 2003 Enterprise Edition SP1 Windows Server 2003 Datacenter Edition SP1 Windows Small Business Server 2003 Standard Edition SP1 Windows Small Business Server 2003 Premium Edition SP1 Windows XP Professional SP2 Windows XP Home Edition SP2 Windows XP Tablet Edition SP2 Windows XP Media Edition SP2 Windows 2000 Professional Edition SP4 Windows 2000 Server Edition SP4 Windows 2000 Advanced Edition SP4 Windows 2000 Datacenter Server Edition SP4 [顶部] 3.4 如果在 Windows Server 2003 禁用了加密服务,则安装程序会失败并显示“Windows 徽标要求”对话框 Windows 加密服务提供程序 (CSP) 是执行身份验证、编码和加密服务的代码,基于 Windows 的应用程序通过 Windows Server 2003 的 CryptoAPI 访问这些服务。如果停止或禁用 CSP 服务,则 SQL Server 安装程序会失败并显示“Windows 徽标要求”消息。 注意: 在 Windows Server 2003 故障转移群集运行 SQL Server 安装程序之前,必须在所有群集节点上启动 CSP 服务。 若要在 Windows Server 2003 启用 Windows CSP 服务,请执行下列操作: 在“控制面板”,打开“管理工具”,再双击“服务”。 在“名称”列,右键单击“加密服务”,再单击“启动”。 关闭“服务”。 运行安装程序。 [顶部] 3.5 未在 Windows 完全启用 MSDTC 由于未在 Windows 完全配置 Microsoft 分布式事务处理协调器 (MS DTC),因此,应用程序可能无法在分布式事务登记 SQL Server Express 资源。此问题会影响使用分布式事务的链接服务器、分布式查询以及远程存储过程。为了避免出现此类问题,您必须在安装有 SQL Server Express 的服务器完全启用 MS DTC 服务。 若要完全启用 MS DTC,请执行下列操作: 在“控制面板”,打开“管理工具”,再双击“组件服务”。 在左窗格的“控制台根目录”,单击“组件服务”,再展开“计算机”。 右键单击“我的电脑”,再单击“属性”。 在 MSDTC 选项卡,单击“安全配置”。 在“安全设置”下,选所有复选框。 验证是否已将“DTC 登录帐户”名称设置为 NT AUTHORITY\NetworkService。 [顶部] 3.6 默认情况下不安装示例数据库 默认情况下,不在 SQL Server Express 安装示例数据库。Northwind 和 pubs 示例数据库可以从 Microsoft 网站进行下载。Adventureworks 示例数据库可从此 Microsoft 网站安装。 [顶部] 3.7“强制加密”配置可能会导致 SQL Server Express 安装程序失败 如果现有的 SQL Server 客户端安装配置为启用了“强制加密”选项,则安装程序可能会失败。若要解决此问题,请在所有 SQL Server 客户端上禁用此选项。对于 SQL Server 2000 的 Microsoft 数据访问组件 (MDAC) 客户端,请使用 SQL Server 2000 客户端网络实用工具。对于 SQL 本机客户端,请使用“添加或删除程序”卸载 SQL 本机客户端。在群集,请卸载所有节点SQL 本机客户端。然后,再次运行 SQL Server 2005 安装程序。 [顶部] 3.8 sp_configure 的设置可能会导致安装程序在升级系统数据库失败 如果在更早 Community Technology Preview (CTP) 版本的 SQL Server Express 禁用了 sp_configure 选项“SMO 和 DMO XP”,则在使用 SAVESYSDB 卸载该早期实例,然后使用 USESYSDB 安装本版本,将可能无法从命令提示符下进行安装。若要解决此问题,请确保在使用安装程序升级系统数据库之前,已启用上述选项。有关详细信息,请参阅此 Microsoft 网站上 SQL Server 联机丛书的“设置服务器配置选项”。 [顶部] 3.9 安装 SQL Server 2000 的默认实例可能会禁用 SQL Server Express 如果您的计算机已安装 SQL Server 2000 管理工具和 SQL Server Express 的默认实例,则可以使用 SQL Server 安装程序安装 SQL Server 2000 的默认实例。但是,这样做会禁用已安装的 SQL Server Express 实例。因此,如果计算机上已安装 SQL Server 2000 管理工具和 SQL Server Express 的默认实例,则不要安装 SQL Server 2000 的默认实例。 [顶部] 3.10 在 Windows 域控制器安装 SQL Server Express 安全说明: 我们不建议在域控制器运行 SQL Server Express。 可以在 Windows 域控制器安装 SQL Server Express;但是,SQL Server Express 无法在 Windows Server 2003 域控制器像本地服务或网络服务那样运行。SQL Server 服务帐户应以 Windows 域用户帐户的身份运行。您也可安装 SQL Server 服务帐户以本地系统的身份运行,但是不建议使用此选项。 不要在安装完 SQL Server Express 之后更改服务器的角色。例如,如果您在成员服务器安装了 SQL Server Express,则不要使用 Dcpromo 工具将该服务器提升为域控制器。或者,如果您在域控制器安装了 SQL Server Express,则不要使用 Dcpromo 将该服务器降级为成员服务器。如果在安装完 SQL Server Express 之后更改服务器的角色,便会导致功能丢失,不支持这样做。 [顶部] 3.11 现有的 SQL 本机客户端安装可能导致安装失败 安装可能失败并回滚,同显示以下错误消息:“找不到产品 Microsoft SQL 本机客户端的安装包。请使用安装包 sqlncli.msi 的有效副本重试安装。”若要解决此问题,请使用“添加或删除程序”卸载 SQL 本机客户端。对于群集,请从所有节点卸载 SQL 本机客户端。然后,再次运行 SQL Server 安装程序。 [顶部] 3.12 卸载 SQL Server Express 和 Visual Studio 2005 的预发布版本 安装前,您必须删除 SQL Server Express、Visual Studio 2005 和 .NET Framework 2.0 的所有以前内部版本。由于这两个产品都依赖于相同版本的 .NET Framework,因此必须按照以下顺序卸载它们: SQL Server Express Visual Studio 2005 .NET Framework 2.0 [顶部] 3.13 维护模式下将提示输入 Setup.exe 的路径 如果在维护模式下安装新的 SQL Server 2005 组件,系统将提示您指定 SQL Server 2005 安装媒体 Setup.exe 文件的位置。指定该文件位置,路径一定要包含“Setup.exe”。例如,路径“D:\”将失败,而“D:\Setup.exe”将成功。 [顶部] 3.14 Setup 命令 Shell 脚本的故障排除失败 路径变量包含括号,Setup 命令 shell 脚本可以生成 Windows 脚本错误。出现该错误的原因是命令 shell 脚本不支持路径变量包含的括号。在将 32 位组件安装到 64 位计算机的 Windows (WOW64) 32 位子系统的 Windows 可能会出现该错误。例如,下列路径值为“C:\Program Files (x86)\”的脚本将生成一个错误,因为 shell 脚本解释器会将扩展的 PATH 变量的括号错误地解释为 IF/ELSE 语句的一部分: IF "%SOME_PATH%" == "" ( SET PATH=%PATH%;%PATH_A% ) ELSE ( SET PATH=%PATH%;%PATH_B% ) 若要解决此问题,请更改该脚本以删除括号。例如: IF "%SOME_PATH%" == "" set PATH=%PATH%;%PATH_A% IF NOT "%SOME_PATH%" == "" set PATH=%PATH%;%PATH_B% 或者从路径删除包含括号的 SQL 项。 [顶部] 4.0 其他信息 4.1 服务帐户和网络协议 在 SQL Server Express ,本地系统帐户即为网络服务帐户。 SQL Server Express 可侦听本地命名管道和共享内存。执行默认安装,无法远程连接到 SQL Server Express。您需要启用 TCP/IP 并检查是否已启用防火墙。 若要启用 TCP/IP,请执行下列操作: 在“开始”菜单,选择“所有程序”,依次指向 Microsoft SQL Server 2005 和“配置工具”,再单击“SQL Server 配置管理器”。 或者,您可以通过右键单击“我的电脑”并选择“管理”来打开计算机管理器。在“计算机管理”,依次展开“服务和应用程序”和“SQL Server 配置管理器”。 展开“SQL Server 2005 网络配置”,再单击“InstanceName 的协议”。 在协议列表,右键单击要启用的协议,再单击“启用”。 协议的图标将更改为显示该协议已启用。 若要启用防火墙,请执行下列操作: 依次单击“开始”和“控制面板”,再单击“网络连接”。 在左侧的导航栏,单击“更改 Windows 防火墙的设置”。 在“异常”选项卡的“程序和服务”框,您可能看到已列出 SQL Server,但未将其选择为异常。如果您选该复选框,则 Windows 将打开端口 1433 以允许 TCP 请求进入。或者,如果您未看到列出 SQL Server,则请执行下列操作: 单击“添加程序”。 单击“浏览”。 导航到 drive:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\BINN 将文件 sqlservr.exe 添加到异常列表。 [顶部] 4.2 用户实例功能 SQL Server Express 允许非管理员用户在没有 DBCreator 特权的情况下也能复制或移动数据库(使用 Xcopy 部署)。有关详细信息,请参阅此 Microsoft 网站上的 SQL Server Express 联机丛书的“非管理员用户实例”。 [顶部] 4.3 WMI 提供程序和用户实例功能 动态生成的用户实例不支持 WMI Provider for Server Events。此程序仍运行于父 SQL Server Express 实例。 [顶部] 4.4 联机丛书 SQL Server Express 联机丛书可从此 Microsoft 网站下载获得。 注意: 由于 SQL Server Express 是 SQL Server 2005 的一个受限版本,因此,SQL Server Express 联机丛书的文档很大程度上依赖于 SQL Server 2005 联机丛书的内容。 SQL Server 2005 联机丛书可从此 Microsoft 网站下载获得。 Microsoft 定期发布 SQL Server Express 联机丛书和 SQL Server 2005 联机丛书的可下载更新。我们建议您安装这些更新以及更新该文档的本地副本相应的信息。 [顶部] 4.5 获取 SQL Server Express 帮助 Microsoft 通过以下四个主要信息来源提供有关 SQL Server Express 的信息: SQL Server Express 文档和示例 SQL Server 2005 文档 Microsoft Developer Network (MSDN) 和 TechNet 上的 SQL Server 站点 其他 Microsoft 网站上的 SQL Server 信息 您也可以通过 SQL Server 社区从其他人或直接从 Microsoft 支持人员处获取帮助。有关详细信息,请参阅 SQL Server Express 联机丛书的“获取 SQL Server Express 帮助”。 [顶部] 4.6 新闻组支持 有关新闻组支持的信息,请从此 Microsoft 网站访问 SQL Server Express 新闻组。请不要使用其他 Microsoft 新闻组张贴有关 SQL Server Express 的问题。 可在 SQL Server Express 网站日志找到来自 SQL Server Express 小组的最新信息。 注意: 仅支持英语版的新闻组。 [顶部] 4.7 提供有关 SQL Server Express 的反馈 可通过下列方式提供有关 SQL Server Express 的建议和错误报告: 在此 Microsoft 网站发送有关 SQL Server Express 的功能和用户界面的建议和错误报告。 使用 SQL Server Express 联机丛书的反馈功能发送有关文档的建议以及报告其不正确的内容。 选择自动将错误报告和功能使用情况数据发送给 Microsoft 进行分析。 有关详细信息,请参阅 SQL Server 联机丛书的“提供有关 SQL Server 2005 的反馈”。 [顶部] 5.0 数据库引擎 本部分说明 SQL Server 2005 数据库引擎和数据库引擎特定的命令提示实用工具的最新项,这些最新项也应用于 SQL Server Express。 [顶部] 5.1 在 Windows Server 2003 SP1 运行连接可能会被强行关闭 如果 TCP/IP 网络处于打开状态,则指向 Windows Server 2003 Service Pack 1 运行的 SQL Server Express 数据库引擎实例的客户端连接可能会失败,并出现以下错误:“提供程序号: 7,错误: 10054,错误消息:‘TCP 提供程序: 现有连接被远程主机强行关闭’”。 如果要通过大量客户端连接尝试来测试可伸缩性,则可能会出现此错误。若要解决此问题,请使用 regedit.exe 实用工具将名为 SynAttackProtect 的新 DWORD 值添加到注册表项 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\(值数据为 00000000)。 安全说明: 设置此注册表项可能会使服务器受到 SYN Flood 拒绝服务攻击。测试完成,请删除该注册表值。 注意: 如果注册表编辑不当,可能会导致严重问题并可能需要重新安装操作系统。Microsoft 不保证可以解决因注册表编辑不当而导致的问题。在编辑注册表之前,请备份所有重要数据。有关如何备份、恢复和编辑注册表的信息,请参阅 Microsoft 知识库文章 256986。 [顶部] 5.2 安全的 Service Broker 对话需要数据库主密钥 SQL Server 2005 联机丛书错误地说明了当跨数据库使用对话安全设置进行会话SQL Server 会创建通过数据库主密钥加密的会话密钥。实际上,对于所有使用对话安全设置进行的会话而言,会话密钥均通过数据库主密钥进行加密。如果数据库主密钥不可用,则在创建数据库主密钥或会话超之前,会话的消息将一直保留在 transmission_queue 并出现错误。您可以使用 ENCRYPTION = OFF 参数创建未加密的对话,也可以使用以下命令创建数据库主密钥: CREATE MASTER KEY ENCRYPTION BY PASSWORD = '' [顶部] 5.3 公共语言运行用户定义类型应只有一个序列化 每个字节顺序的用户定义类型 (UDT) 对象的实例只能有一种序列化表示形式。如果序列化或反序列化例程识别出某个特定对象具有多种表示形式,则可能会在下列情况下出现错误: 在验证通过 RPC 传递的字节顺序的 UDT 期间,UDT 验证执行 UDT 的反序列化/重新序列化,并要求生成的字节与原始字节完全相同。如果验证失败,则会出现错误:“System.Data.SqlClient.SqlException,传入的 TDS RPC 协议流不正确。参数 1 (""):提供的值不是数据类型 的有效实例。请检查源数据的无效值。” 在 DBCC 期间,字节顺序的 UDT 列存储的字节数必须等于计算的 UDT 值序列化。如果不相等,则 DBCC CHECKTABLE 例程将会报告一致性错误。 [顶部] 5.4 尚未通过设置启用网络连接 为了提高安全性,SQL Server Express 针对某些新安装禁用了网络连接。如果您使用的是 SQL Server Enterprise Edition、Standard Edition 或 Workgroup Edition,或计算机上已经安装有 SQL Server,则不会禁用使用 TCP/IP 协议的网络连接。除非计算机上已经安装有 SQL Server,否则 Named Pipes 连接仅适用于本地连接。对于所有安装,都会启用 Shared Memory 协议,以允许服务器的本地连接。根据具体的安装条件和安装选项,可能会停止 SQL Browser 服务。 [顶部] 5.5 包含用户定义类型的程序集注意事项 下列限制适用于包含用户定义类型的公共语言运行 (CLR) 程序集。 公共语言运行用户定义类型只能有一个序列化 字节顺序的用户定义类型对象的各个实例只能有一种序列化表示形式。如果序列化或反序列化例程检测到某个特定对象具有多种表示形式,则在以下情况下可能会显示错误: 在验证通过 RPC 传递的字节顺序的用户定义类型的过程,用户定义类型验证过程会对该用户定义类型执行反序列化/重新序列化,并要求生成的字节与原始字节完全相同。如果验证失败,您将看到以下错误:“System.Data.SqlClient.SqlException,传入的 TDS RPC 协议流不正确。参数 1 (""): 提供的值不是数据类型 的有效实例。请检查源数据的无效值。” 在 DBCC CHECKTABLE 过程,在字节顺序的用户定义类型列存储的字节必须与计算出的 UDT 值的序列化表示形式相同。如果不相同,则 DBCC CHECKTABLE 例程将报告一个一致性错误。 有关更新带有用户定义类型类的程序集的已更新的限制 可以按下列方式使用 ALTER ASSEMBLY 更新 CLR 用户定义类型: 修改用户定义类型类的公共方法,但不更改签名或属性。 添加新的公共方法。 以任何方式修改私有方法。 使用 ALTER ASSEMBLY 不能更改本机序列化的用户定义类型包含的字段,包括数据成员和基类。不支持所有其他更改。 [顶部] 5.6 SQL Server 不保证更新程序集的数据一致性 如未指定 WITH UNCHECKED DATA,则在新的程序集版本对表、索引或其他持久站点的现有数据产生影响SQL Server 将会阻止执行 ALTER ASSEMBLY。更新公共语言运行 (CLR) 程序集SQL Server 并不保证计算列、索引、索引视图或表达式与基础例程和类型保持一致。执行 ALTER ASSEMBLY 需谨慎操作,以确保在表达式结果和基于存储在程序集的该表达式的值之间没有不匹配。 [顶部] 5.7 卷影复制服务的快照自动恢复功能的注意事项 卷影复制服务 (VSS) 的快照自动恢复功能具有下列限制。 多个持续自动恢复的快照 在 Windows Server 2003 Service Pack 1 (SP1) 和更高版本,您只能创建单个持续自动恢复的快照。若要创建其他快照,您必须首先应用知识库文章 891957 所述的更新。 注意: 如果尚未应用此更新,则可以通过以下方式创建新的持续自动恢复的快照:首先删除现有的持续自动恢复的快照,然后创建一个新的持续自动恢复的快照。 自动恢复的快照和全文目录 快照自动恢复功能不支持全文目录。创建自动恢复的快照之后,在该快照,数据库的所有全文目录都将处于脱机状态。在从快照附加数据库,全文目录会永久保持脱机状态。但附加的数据库的其他所有数据均可用。 在从自动恢复的快照直接附加包含全文目录的数据库,附加操作将返回以下错误消息: Server: Msg 7608, Level 17, State 1, Line 1 An unknown full-text failure (0xc000000d) occurred during "Mounting a full-text catalog". 如果不需要直接从快照附加数据库,则可以通过如下方式来避免此问题:先将快照的数据库文件和全文目录复制到基于驱动器号的常规卷,然后从该位置附加数据库。只要附加命令指定了所复制的全文文件的正确位置,即可正常使用这些全文目录。 [顶部] 5.8 注册公共语言运行程序集的限制 SQL Server 不允许使用相同的名称、区域性和公钥注册程序集的不同版本。如果计划保留九月份 CTP 版本之前的 SQL Server Express 版本的数据库,则在安装该版本之前,必须删除具有多个注册的程序集的所有其他实例,只保留一个实例。 [顶部] 5.9 创建 EXTERNAL_ACCESS 和 UNSAFE 程序集 若要在 SQL Server 创建 EXTERNAL_ACCESS 或 UNSAFE 程序集或者要加载程序集,必须满足下列两个条件之一: 程序集经过强名称签名或使用证书进行了 authenticode 签名。此强名称(或证书)在 SQL Server 作为非对称密钥(或证书)创建,并具有相应的登录名,该登录名具有 EXTERNAL ACCESS ASSEMBLY 权限(对于 EXTERNAL ACCESS 程序集)或 UNSAFE ASSEMBLY 权限(对于 UNSAFE 程序集)。 数据库所有者 (DBO) 具有 EXTERNAL ACCESS ASSEMBLY(对于 EXTERNAL ACCESS 程序集)或 UNSAFE ASSEMBLY(对于 UNSAFE 程序集)权限,并且该数据库的 TRUSTWORTHY 属性设置为 ON。 除了要在服务器进程运行公共语言运行 (CLR) 代码之外,建议始终将数据库的 TRUSTWORTHY 属性设置为 ON。并且建议通过 master 数据库的程序集文件创建非对称密钥。然后,必须创建映射到此非对称密钥的登录名,并且为该登录名授予 EXTERNAL ACCESS ASSEMBLY 或 UNSAFE ASSEMBLY 权限。 下面的 Transact-SQL 语句将执行完成下列操作所需的步骤:创建非对称密钥,将一个登录名映射到此密钥,然后为该登录名授予 EXTERNAL_ACCESS ASSEMBLY 权限。必须在执行 CREATE ASSEMBLY 语句之前执行下面的 Transact-SQL 语句: USE master GO CREATE ASYMMETRIC KEY HelloWorldKey FROM EXECUTABLE FILE = 'C:\HelloWorld.dll' CREATE LOGIN HelloWorldLogin FROM ASYMMETRIC KEY HelloWorldKey GRANT EXTERNAL ACCESS ASSEMBLY TO HelloWorldLogin GO [顶部] 5.10 应用程序角色与元数据可见性限制以及动态管理视图的兼容性 在某个应用程序角色下运行的程序的行为可能会发生更改,因为在默认情况下,SQL Server Express 将限制 master 数据库元数据对于应用程序角色的可见性。作为临解决方法,您可以启用跟踪标志 #4616。有关详细信息,请参阅知识库文章 906549。 [顶部] 5.11 未实现 SUPPLEMENTAL_LOGGING 数据库选项 在此版本的 SQL Server 未实现 SUPPLEMENTAL_LOGGING 数据库选项。此选项可以设置,但不起任何作用。 [顶部] 5.12 sys.dm_clr_loaded_assemblies 显示无法加载的程序集 由于任何原因未能加载到服务器地址空间的程序集仍将显示在 sys.dm_clr_loaded_assemblies 动态管理视图。 [顶部] 5.13 XQuery 更改 联机丛书未说明 SQL Server Express XQuery 实现的以下几个方面: 没有将 CDATA 部分生成的字符视为空格字符。例如,select cast(''as xml).query(' <![CDATA[ ]]> {"abc"}') 返回 abc。 支持构造空元素和空属性。 命名空间前缀 xmlns 用于标识命名空间声明属性,不能在 XQuery 表达式重新声明。这是 XQuery 规范要求的行为。 将“for”与源表达式 () 一起使用会生成一个静态的错误。 在使用 xml 数据类型的 query() 方法构造的 XML 文档,CDATA 部分的回车符变为换行符。为了进行文本 XML 分析,使用换行符代替之前的回车符实体引用 ( )。 包含 local-name() 和 namespace-uri() 的 Transact-SQL 用户定义函数为确定性函数。 [顶部] 5.14 xsd:dateTime 转换的限制比所述限制更少 不包含日期和间分隔符 T 或区的 xs:dateTime 值的字符串表示可以在 value() 方法转换为 SQL datetime 类型,如以下示例所示: declare @aaa xml set @aaa = '' select @aaa.value('(//AAA)[1]/@MyDate', 'datetime') [顶部] 5.15 XML 架构支持 SQL Server 2005 联机丛书未说明 SQL Server 2005 对 XML 架构以下几个方面的支持: 可以将 Reporting Services (RDL) 的 XML 架构加载到 XML 架构集合。 如果 xs:dateTime 和 xs:time 类型的值包含具有三个以上小数位数的副值,则这些值不会返回错误,而是会被进行舍入。 当基类型具有 fixed="true" ,如果在派生类型重新定义 maxInclusive,便会拒绝使用 XML 架构。 限制 xs:dateTime、xs:data 和 xs:time 等数据类型的派生类型将忽略 minInclusive、minExclusive、maxInclusive 和 maxExclusive 部分的尾随空格。 [顶部] 5.16 不应使用 RC4 加密 请勿使用 RC4 加密保护 SQL Server 2005 的数据,而改为使用分组密码,如 AES 256 或 Triple DES。 [顶部] 6.0 复制 本部分介绍了有关复制的最新信息。 [顶部] 默认情况下禁用复制功能 Microsoft SQL Server 2005 Express Edition 可以用作所有复制类型的订阅服务器,但是默认情况下不会为此版本安装复制功能。 若要安装复制组件,请执行下列操作: 在“功能选择”页,展开“数据库服务”。 单击“复制”,再单击“整个功能将被安装在本地硬盘上”。 若要安装连接组件和复制管理对象 (RMO),请执行下列操作: 在“功能选择”页,单击“客户端组件”,再单击“整个功能将被安装在本地硬盘上”。 [顶部] © 2005 Microsoft Corporation。保留所有权利。
一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A: UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 但不在 TABLE2 的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用 (EXCEPT ALL),不消除重复行。 C: INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用 (INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 12、说明:使用外连接 A、left (outer) join: 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。 SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c B:right (outer) join: 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。 C:full/cross (outer) join: 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表的所有记录。 12、分组:Group by: 一张表,一旦分组 完成后,查询后只能得到组相关的信息。 组相关的信息:(统计信息) count,sum,max,min,avg 分组的标准) 在SQLServer分组:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数的字段,不能和普通的字段放在一起; 13、对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后接表明,附加需要完整的路径名 14.如何修改数据库的名称: sp_renamedb 'old_name', 'new_name' 二、提升 1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用) 法一:select * into b from a where 11(仅用于SQlServer) 法二:select top 0 * into b from a 2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b; 3、说明:跨数据库之间表的拷贝(具体数据使用绝对路径) (Access可用) insert into b(a, b, c) select d,e,f from b in ‘具体数据库’ where 条件 例子:..from b in '"&Server.MapPath(".")&"\data.mdb" &"' where.. 4、说明:子查询(表名1:a 表名2:b) select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3) 5、说明:显示文章、提交人和最后回复间 select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b 6、说明:外连接查询(表名1:a 表名2:b) select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c 7、说明:在线视图查询(表名1:a ) select * from (SELECT a,b,c FROM a) T where t.a > 1; 8、说明:between的用法,between限制查询数据范围包括了边界值,not between不包括 select * from table1 where time between time1 and time2 select a,b,c, from table1 where a not between 数值1 and 数值2 9、说明:in 的使用方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,’值6’) 10、说明:两张关联表,删除主表已经在副表没有的信息 delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 ) 11、说明:四表联查问题: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where ..... 12、说明:日程安排提前五分钟提醒 SQL: select * from 日程安排 where datediff('minute',f开始间,getdate())>5 13、说明:一条sql 语句搞定数据库分页 select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段 具体实现: 关于数据库分页: declare @start int,@end int @sql nvarchar(600) set @sql=’select top’+str(@end-@start+1)+’+from T where rid not in(select top’+str(@str-1)+’Rid from T where Rid>-1)’ exec sp_executesql @sql 注意:在top后不能直接跟一个变量,所以在实际应用只有这样的进行特殊的处理。Rid为一个标识列,如果top后还有具体的字段,这样做是非常有好处的。因为这样可以避免 top的字段如果是逻辑索引的,查询的结果后实际表的不一致(逻辑索引的数据有可能和数据表的不一致,而查询如果处在索引则首先查询索引) 14、说明:前10条记录 select top 10 * form table1 where 范围 15、说明:选择在每一组b值相同的数据对应的a最大的记录的所有信息(类似这样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成绩排名,等等.) select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b) 16、说明:包括所有在 TableA 但不在 TableB和TableC 的行并消除所有重复行而派生出一个结果表 (select a from tableA ) except (select a from tableB) except (select a from tableC) 17、说明:随机取出10条数据 select top 10 * from tablename order by newid() 18、说明:随机选择记录 select newid() 19、说明:删除重复记录 1),delete from tablename where id not in (select max(id) from tablename group by col1,col2,...) 2),select distinct * into temp from tablename delete from tablename insert into tablename select * from temp 评价: 这种操作牵连大量的数据的移动,这种做法不适合大容量但数据操作 3),例如:在一个外部表导入数据,由于某些原因第一次只导入了一部分,但很难判断具体位置,这样只有在下一次全部导入,这样也就产生好多重复的字段,怎样删除重复字段 alter table tablename --添加一个自增列 add column_b int identity(1,1) delete from tablename where column_b not in( select max(column_b) from tablename group by column1,column2,...) alter table tablename drop column column_b 20、说明:列出数据库里所有的表名 select name from sysobjects where type='U' // U代表用户 21、说明:列出表里的所有的列名 select name from syscolumns where id=object_id('TableName') 22、说明:列示type、vender、pcs字段,以type字段排列,case可以方便地实现多重选择,类似select 的case。 select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type 显示结果: type vender pcs 电脑 A 1 电脑 A 1 光盘 B 2 光盘 A 2 手机 B 3 手机 C 3 23、说明:初始化表table1 TRUNCATE TABLE table1 24、说明:选择从10到15的记录 select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc 三、技巧 1、1=1,1=2的使用,在SQL语句组合用的较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, 如: if @strWhere !='' begin set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere end else begin set @strSQL = 'select count(*) as Total from [' + @tblName + ']' end 我们可以直接写成 错误!未找到目录项。 set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere 2、收缩数据库 --重建索引 DBCC REINDEX DBCC INDEXDEFRAG --收缩数据和日志 DBCC SHRINKDB DBCC SHRINKFILE 3、压缩数据库 dbcc shrinkdatabase(dbname) 4、转移数据库给新用户以已存在用户权限 exec sp_change_users_login 'update_one','newname','oldname' go 5、检查备份集 RESTORE VERIFYONLY from disk='E:\dvbbs.bak' 6、修复数据库 ALTER DATABASE [dvbbs] SET SINGLE_USER GO DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK GO ALTER DATABASE [dvbbs] SET MULTI_USER GO 7、日志清除 SET NOCOUNT ON DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT USE tablename -- 要操作的数据库名 SELECT @LogicalFileName = 'tablename_log', -- 日志文件名 @MaxMinutes = 10, -- Limit on time allowed to wrap log. @NewSize = 1 -- 你想设定的日志文件的大小(M) Setup / initialize DECLARE @OriginalSize int SELECT @OriginalSize = size FROM sysfiles WHERE name = @LogicalFileName SELECT 'Original Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB' FROM sysfiles WHERE name = @LogicalFileName CREATE TABLE DummyTrans (DummyColumn char (8000) not null) DECLARE @Counter INT, @StartTime DATETIME, @TruncLog VARCHAR(255) SELECT @StartTime = GETDATE(), @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY' DBCC SHRINKFILE (@LogicalFileName, @NewSize) EXEC (@TruncLog) -- Wrap the log if necessary. WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName) AND (@OriginalSize * 8 /1024) > @NewSize BEGIN -- Outer loop. SELECT @Counter = 0 WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000)) BEGIN -- update INSERT DummyTrans VALUES ('Fill Log') DELETE DummyTrans SELECT @Counter = @Counter + 1 END EXEC (@TruncLog) END SELECT 'Final Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),size) + ' 8K pages or ' + CONVERT(VARCHAR(30),(size*8/1024)) + 'MB' FROM sysfiles WHERE name = @LogicalFileName DROP TABLE DummyTrans SET NOCOUNT OFF 8、说明:更改某个表 exec sp_changeobjectowner 'tablename','dbo' 9、存储更改全部表 CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch @OldOwner as NVARCHAR(128), @NewOwner as NVARCHAR(128) AS DECLARE @Name as NVARCHAR(128) DECLARE @Owner as NVARCHAR(128) DECLARE @OwnerName as NVARCHAR(128) DECLARE curObject CURSOR FOR select 'Name' = name, 'Owner' = user_name(uid) from sysobjects where user_name(uid)=@OldOwner order by name OPEN curObject FETCH NEXT FROM curObject INTO @Name, @Owner WHILE(@@FETCH_STATUS=0) BEGIN if @Owner=@OldOwner begin set @OwnerName = @OldOwner + '.' + rtrim(@Name) exec sp_changeobjectowner @OwnerName, @NewOwner end -- select @name,@NewOwner,@OldOwner FETCH NEXT FROM curObject INTO @Name, @Owner END close curObject deallocate curObject GO 10、SQL SERVER直接循环写入数据 declare @i int set @i=1 while @i<30 begin insert into test (userid) values(@i) set @i=@i+1 end 案例: 有如下表,要求就裱所有沒有及格的成績,在每次增長0.1的基礎上,使他們剛好及格: Name score Zhangshan 80 Lishi 59 Wangwu 50 Songquan 69 while((select min(score) from tb_table)<60) begin update tb_table set score =score*1.01 where score60 break else continue end 数据开发-经典 1.按姓氏笔画排序: Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as //从少到多 2.数据库加密: select encrypt('原始密码') select pwdencrypt('原始密码') select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码') select pwdencrypt('原始密码') select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 3.取回表字段: declare @list varchar(1000), @sql nvarchar(1000) select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A' set @sql='select '+right(@list,len(@list)-1)+' from 表A' exec (@sql) 4.查看硬盘分区: EXEC master..xp_fixeddrives 5.比较A,B表是否相等: if (select checksum_agg(binary_checksum(*)) from A) = (select checksum_agg(binary_checksum(*)) from B) print '相等' else print '不相等' 6.杀掉所有的事件探察器进程: DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses WHERE program_name IN('SQL profiler',N'SQL 事件探查器') EXEC sp_msforeach_worker '?' 7.记录搜索: 开头到N条记录 Select Top N * From 表 ------------------------------- N到M条记录(要有主索引ID) Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID Desc ---------------------------------- N到结尾记录 Select Top N * From 表 Order by ID Desc 案例 例如1:一张表有一万多条记录,表的第一个字段 RecID 是自增长字段, 写一个SQL语句, 找出表的第31到第40个记录。 select top 10 recid from A where recid not in(select top 30 recid from A) 分析:如果这样写会产生某些问题,如果recid在表存在逻辑索引。 select top 10 recid from A where……是从索引查找,而后面的select top 30 recid from A则在数据表查找,这样由于索引的顺序有可能和数据表的不一致,这样就导致查询到的不是本来的欲得到的数据。 解决方案 1, 用order by select top 30 recid from A order by ricid 如果该字段不是自增长,就会出现问题 2, 在那个子查询也加条件:select top 30 recid from A where recid>-1 例2:查询表的最后以条记录,并不知道这个表共有多少数据,以及表结构。 set @s = 'select top 1 * from T where pid not in (select top ' + str(@count-1) + ' pid from T)' print @s exec sp_executesql @s 9:获取当前数据库的所有用户表 select Name from sysobjects where xtype='u' and status>=0 10:获取某一个表的所有字段 select name from syscolumns where id=object_id('表名') select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = '表名') 两种方式的效果相同 11:查看与某一个表相关的视图、存储过程、函数 select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%' 12:查看当前数据库所有存储过程 select name as 存储过程名称 from sysobjects where xtype='P' 13:查询用户创建的所有数据库 select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa') 或者 select dbid, name AS DB_NAME from master..sysdatabases where sid 0x01 14:查询某一个表的字段和数据类型 select column_name,data_type from information_schema.columns where table_name = '表名' 15:不同服务器数据库之间的数据操作 --创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例 select * from ITSV.数据库名.dbo.表名 --导入示例 select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用删除链接服务器 exec sp_dropserver 'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource) --1、openrowset --查询示例 select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --生成本地表 select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --把本地表导入远程表 insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) select *from 本地表 --更新本地表 update b set b.列A=a.列A from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b on a.column1=b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' --查询 select * FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') --把本地表导入远程表 insert openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') select * from 本地表 --更新本地表 update b set b.列B=a.列B FROM openquery(ITSV, 'SELECT * FROM 数据库.dbo.表名 ') as a inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset SELECT * FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta --把本地表导入远程表 insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名 select * from 本地表 SQL Server基本函数 SQL Server基本函数 1.字符串函数 长度与分析用 1,datalength(Char_expr) 返回字符串包含字符数,但不包含后面的空格 2,substring(expression,start,length) 取子串,字符串的下标是从“1”,start为起始位置,length为字符串长度,实际应用以len(expression)取得其长度 3,right(char_expr,int_expr) 返回字符串右边第int_expr个字符,还用left于之相反 4,isnull( check_expression , replacement_value )如果check_expression為空,則返回replacement_value的值,不為空,就返回check_expression字符操作类 5,Sp_addtype 自定義數據類型 例如:EXEC sp_addtype birthday, datetime, 'NULL' 6,set nocount {on|off} 使返回的结果不包含有关受 Transact-SQL 语句影响的行数的信息。如果存储过程包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。SET NOCOUNT 设置是在执行或运行设置,而不是在分析设置。 SET NOCOUNT 为 ON ,不返回计数(表示受 Transact-SQL 语句影响的行数)。 SET NOCOUNT 为 OFF ,返回计数 常识 在SQL查询:from后最多可以跟多少张表或视图:256 在SQL语句出现 Order by,查询,先排序,后取 在SQL,一个字段的最大容量是8000,而对于nvarchar(4000),由于nvarchar是Unicode码。 SQLServer2000同步复制技术实现步骤 一、 预备工作 1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相同的密码,做为发布快照文件夹的有效访问用户 --管理工具 --计算机管理 --用户和组 --右键用户 --新建用户 --建立一个隶属于administrator组的登陆windows的用户(SynUser) 2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作: 我的电脑--D:\ 新建一个目录,名为: PUB --右键这个新建的目录 --属性--共享 --选择"共享该文件夹" --通过"权限"按纽来设置具体的用户权限,保证第一步创建的用户(SynUser) 具有对该文件夹的所有权限 --确定 3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置) 开始--程序--管理工具--服务 --右键SQLSERVERAGENT --属性--登陆--选择"此账户" --输入或者选择第一步创建的windows登录用户名(SynUser) --"密码"输入该用户的密码 4.设置SQL Server身份验证模式,解决连接的权限问题(发布/订阅服务器均做此设置) 企业管理器 --右键SQL实例--属性 --安全性--身份验证 --选择"SQL Server 和 Windows" --确定 5.在发布服务器和订阅服务器上互相注册 企业管理器 --右键SQL Server组 --新建SQL Server注册... --下一步--可用的服务器,输入你要注册的远程服务器名 --添加 --下一步--连接使用,选择第二个"SQL Server身份验证" --下一步--输入用户名和密码(SynUser) --下一步--选择SQL Server组,也可以创建一个新组 --下一步--完成 6.对于只能用IP,不能用计算机名的,为其注册服务器别名(此步在实施没用到) (在连接端配置,比如,在订阅服务器上配置的话,服务器名称输入的是发布服务器的IP) 开始--程序--Microsoft SQL Server--客户端网络实用工具 --别名--添加 --网络库选择"tcp/ip"--服务器别名输入SQL服务器名 --连接参数--服务器名称输入SQL服务器ip地址 --如果你修改了SQL的端口,取消选择"动态决定端口",并输入对应的端口号 二、 正式配置 1、配置发布服务器 打开企业管理器,在发布服务器(B、C、D)上执行以下步骤: (1) 从[工具]下拉菜单的[复制]子菜单选择[配置发布、订阅服务器和分发]出现配置发布和分发向导 (2) [下一步] 选择分发服务器 可以选择把发布服务器自己作为分发服务器或者其他sql的服务器(选择自己) (3) [下一步] 设置快照文件夹 采用默认\\servername\Pub (4) [下一步] 自定义配置 可以选择:是,让我设置分发数据库属性启用发布服务器或设置发布设置 否,使用下列默认设置(推荐) (5) [下一步] 设置分发数据库名称和位置 采用默认值 (6) [下一步] 启用发布服务器 选择作为发布的服务器 (7) [下一步] 选择需要发布的数据库和发布类型 (8) [下一步] 选择注册订阅服务器 (9) [下一步] 完成配置 2、创建出版物 发布服务器B、C、D上 (1)从[工具]菜单的[复制]子菜单选择[创建和管理发布]命令 (2)选择要创建出版物的数据库,然后单击[创建发布] (3)在[创建发布向导]的提示对话框单击[下一步]系统就会弹出一个对话框。对话框上的内容是复制的三个类型。我们现在选第一个也就是默认的快照发布(其他两个大家可以去看看帮助) (4)单击[下一步]系统要求指定可以订阅该发布的数据库服务器类型, SQLSERVER允许在不同的数据库如 orACLE或ACCESS之间进行数据复制。 但是在这里我们选择运行"SQL SERVER 2000"的数据库服务器 (5)单击[下一步]系统就弹出一个定义文章的对话框也就是选择要出版的表 注意: 如果前面选择了事务发布 则再这一步只能选择带有主键的表 (6)选择发布名称和描述 (7)自定义发布属性 向导提供的选择: 是 我将自定义数据筛选,启用匿名订阅和或其他自定义属性 否 根据指定方式创建发布 (建议采用自定义的方式) (8)[下一步] 选择筛选发布的方式 (9)[下一步] 可以选择是否允许匿名订阅 1)如果选择署名订阅,则需要在发布服务器上添加订阅服务器 方法: [工具]->[复制]->[配置发布、订阅服务器和分发的属性]->[订阅服务器] 添加 否则在订阅服务器上请求订阅会出现的提示:改发布不允许匿名订阅 如果仍然需要匿名订阅则用以下解决办法 [企业管理器]->[复制]->[发布内容]->[属性]->[订阅选项] 选择允许匿名请求订阅 2)如果选择匿名订阅,则配置订阅服务器不会出现以上提示 (10)[下一步] 设置快照 代理程序调度 (11)[下一步] 完成配置 当完成出版物的创建后创建出版物的数据库也就变成了一个共享数据库 有数据 srv1.库名..author有字段:id,name,phone, srv2.库名..author有字段:id,name,telphone,adress 要求: srv1.库名..author增加记录则srv1.库名..author记录增加 srv1.库名..author的phone字段更新,则srv1.库名..author对应字段telphone更新 --*/ --大致的处理步骤 --1.在 srv1 上创建连接服务器,以便在 srv1 操作 srv2,实现同步 exec sp_addlinkedserver 'srv2','','SQLOLEDB','srv2的sql实例名或ip' exec sp_addlinkedsrvlogin 'srv2','false',null,'用户名','密码' go --2.在 srv1 和 srv2 这两台电脑,启动 msdtc(分布式事务处理服务),并且设置为自动启动 。我的电脑--控制面板--管理工具--服务--右键 Distributed Transaction Coordinator--属性--启动--并将启动类型设置为自动启动 go --然后创建一个作业定调用上面的同步处理存储过程就行了 企业管理器 --管理 --SQL Server代理 --右键作业 --新建作业 --"常规"项输入作业名称 --"步骤"项 --新建 --"步骤名"输入步骤名 --"类型"选择"Transact-SQL 脚本(TSQL)" --"数据库"选择执行命令的数据库 --"命令"输入要执行的语句: exec p_process --确定 --"调度"项 --新建调度 --"名称"输入调度名称 --"调度类型"选择你的作业执行安排 --如果选择"反复出现" --点"更改"来设置你的间安排 然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行 设置方法: 我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定. --3.实现同步处理的方法2,定同步 --在srv1创建如下的同步处理存储过程 create proc p_process as --更新修改过的数据 update b set name=i.name,telphone=i.telphone from srv2.库名.dbo.author b,author i where b.id=i.id and (b.name i.name or b.telphone i.telphone) --插入新增的数据 insert srv2.库名.dbo.author(id,name,telphone) select id,name,telphone from author i where not exists( select * from srv2.库名.dbo.author where id=i.id) --删除已经删除的数据(如果需要的话) delete b from srv2.库名.dbo.author b where not exists( select * from author where id=b.id) go
分类: SQL Server          Windows server2003 + sql server2005 集群配置安装 一:环境 软硬件环境       虚拟3台windows server 2003主机。其一台做域控DC,另外两台作为节点win1  win2. 域控DC网络设置: Hostname Private网卡 Public网卡   adtest   192.168.9.176     节点主机网络设置 Hostname Private网卡 Public网卡   Win1 10.0.0.173 192.168.9.173   Win2 10.0.0.174 192.168.9.174     二:建域test.com 在域控主机192.168.9.176上安装域 1        设置DC的ip    192.168.9.176
INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739037lWe2.png" \* MERGEFORMATINET 2      在DC使用DCPROMO命令创建域   (后面的步骤需要更新windows组件,必须先挂载安装盘)
INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077391708Ti6.jpg" \* MERGEFORMATINET 3   下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739247Oq09.jpg" \* MERGEFORMATINET 
 4  下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739274XN5X.jpg" \* MERGEFORMATINET 5  下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077393012nbo.png" \* MERGEFORMATINET 6 选择新林的域 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739354rKwn.png" \* MERGEFORMATINET 

7  填入所要创建域的完整的域名
INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739377CMKf.png" \* MERGEFORMATINET 8  下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739509vRI0.png" \* MERGEFORMATINET 9   选择AD数据库和日志文件的存放位置 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739565AxuX.png" \* MERGEFORMATINET 10  存放SYSVOL的存放位置(注意:一定要放在NTFS的分区) INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739603KBsU.png" \* MERGEFORMATINET 
 11   注意:AD是离不开DNS服务的,因为客户机加入域和登录域都需要把域名解析为IP地址,因为此DC没有DNS服务器,所以选择第二项让系统在创建DC的同把DNS服务随之一起安装上.当然你也可以安装DC后自己手动再安装和配置DNS服务器(当是您给会正确配置DNS服务器),建议和DC一起让系统帮我们创建,因为省事 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739851kpky.png" \* MERGEFORMATINET 12  选择兼容的模式,为了以后可以方便windows2000和2003兼容 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407739883TU02.jpg" \* MERGEFORMATINET 
 13  设置AD的还原密码(为了以后对AD数据库做完备份,开机按F8进入AD还原模式需要的还原密码,如果在此设置了密码,一定切记): INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077399565Eoz.jpg" \* MERGEFORMATINET 14  下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407740932ypMd.jpg" \* MERGEFORMATINET 15  下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407741371FFnB.jpg" \* MERGEFORMATINET 16 需要挂载有关盘,才会自动安装DNS INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407741434D07d.jpg" \* MERGEFORMATINET 17  完成 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077425689rnx.jpg" \* MERGEFORMATINET 18   重启 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407742596D44S.jpg" \* MERGEFORMATINET 
 19  安装完重起系统后登录界面为使用的管理员和密码登录到域 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077426257kHs.png" \* MERGEFORMATINET 20  进入系统后查看计算机的状态 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407742652R7uD.png" \* MERGEFORMATINET 21查看管理工具会增加DNS和有关AD的工具,以及安全策略 
INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407742694MvtT.png" \* MERGEFORMATINET 
 22 点开用户和计算机域控管理界面 (创建域test.com完成) INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407742729f3b0.png" \* MERGEFORMATINET 三:配置节点win1 和 节点win2的网络,并添加到域   1 网络配置 win1 网络配置 网卡1:   DNS需要配置DC的IP INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407742769IgEN.jpg" \* MERGEFORMATINET 网卡2 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407742840A6l3.jpg" \* MERGEFORMATINET “高级”里面配置一下禁用NetBIOS   不勾选前面两项 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407742943Fy03.jpg" \* MERGEFORMATINET Win2网络设置 网卡1: INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743537GJ7l.jpg" \* MERGEFORMATINET 网卡2 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077435693D38.png" \* MERGEFORMATINET Win1  win2 进行相同的操作 2  更改计算机名,以及加入域test.com INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743633bYBe.png" \* MERGEFORMATINET 3    属于域控制账号密码 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743676gbuo.jpg" \* MERGEFORMATINET 4   完成后重启 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743709vOFZ.jpg" \* MERGEFORMATINET 5 域登录 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743759G5G5.png" \* MERGEFORMATINET 
 6    加入域后的计算机属性 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743787p33j.png" \* MERGEFORMATINET Win2  也是一样的步骤加入到域   6    在域控主机192.168.9.176可以看到新添加的成员 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743817WsaU.png" \* MERGEFORMATINET 在步骤五可能会提示报错指定域的名称或安全标识(SID)与该域的信任信息不一致 (因为指定域的名称或安全标识(SID)与该域的信任信息不一致)需要修改 修改方法:   1  .从安装盘 support\tools\deploy.cab提取sysprep.exe和setuppcl.exe  到桌面 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743850SDwD.png" \* MERGEFORMATINET 

INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743871Py6C.png" \* MERGEFORMATINET 
INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407743888vP01.png" \* MERGEFORMATINET 2  运行sysprep.exe"确定"开始重新封装 往下就是下一步下一步安装即可  (不能远程操作,封装一次即可,不作详述了) 四:安装win server2003集群 Win1节点上进行操作,关闭其他节点   1  依次单击“开始”、“所有程序”和“管理工具”,然后单击“群集管理器” INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077439293FFp.png" \* MERGEFORMATINET 2 下一步 
INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077440578D3X.png" \* MERGEFORMATINET 3  选择域(test.com),键入群集名win2003cluster。下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744070JRQx.png" \* MERGEFORMATINET         4 机器名输入 win1。下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744154ehw0.png" \* MERGEFORMATINET     5  这一步是检测硬件环境是否符合群集要求。如果这一步出现错误提示,可以点击“查看日志”,按照提示检查网络设置和磁盘阵列连接是否正确 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744230SSkp.gif" \* MERGEFORMATINET   1    通过下一步,输入集群的IP地址,操作系统虚拟服务器的IP 地址 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744249x6HR.gif" \* MERGEFORMATINET   6  输入域用户名和密码,这里使用的是域管理员administrator INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744263857b.gif" \* MERGEFORMATINET 说明:在项目实施一定不能用域的管理员administrator。应该要求用户网络管理员提供一个专门管理 群集的新用户。这个新用户在各个群集节点应该在本地管理员组(local administrator group)。   7 点击“仲裁”按钮,在弹出的窗口选择仲裁资源。我们选择磁盘Q(QDisk)作为仲裁盘 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744272ks9Q.gif" \* MERGEFORMATINET   8 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744294mA7n.gif" \* MERGEFORMATINET   9 完成 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744319FJ6n.gif" \* MERGEFORMATINET   10  群集 win2003cluster 已经配置成功。但是目前只有win1,我们需要将第二个节点加入,构建出容灾群集。 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744358n8K5.gif" \* MERGEFORMATINET     11  新建节点 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744371gd4L.gif" \* MERGEFORMATINET   12    下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744385peeG.gif" \* MERGEFORMATINET         13  输入“win2” INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744396zcBj.png" \* MERGEFORMATINET   14  下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744468rsZ5.gif" \* MERGEFORMATINET     15 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744481R038.gif" \* MERGEFORMATINET   16 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744502HRQ7.gif" \* MERGEFORMATINET       17 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744520a8xd.gif" \* MERGEFORMATINET Win2上的共享磁盘QDisk 和ClusterData 已经被win1 所独占。这个警告不用理会     18 下一步,完成win2节点添加 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744536ppLl.gif" \* MERGEFORMATINET     19 操作系统容灾群集已经安装完毕。 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744552ya8d.gif" \* MERGEFORMATINET     20  配置群集网络通信 右键选择群集“属性” INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744587KWB4.gif" \* MERGEFORMATINET   21 本地连接2 -à属性   INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744602x808.png" \* MERGEFORMATINET     22 专门用于群集节点内部通讯使用的 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077446226FNs.png" \* MERGEFORMATINET     23确保private 在public 上面(private 优先级更高)。确定完成网络设置。 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744651WcyM.jpg" \* MERGEFORMATINET       24  测试操作系统群集 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744660XhOo.gif" \* MERGEFORMATINET     25  点击移动组可以相互切换资源 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744686wgRC.png" \* MERGEFORMATINET         26为了测试群集的可用性,在win1 上右键选择“停止群集服务” INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744699WCOe.png" \* MERGEFORMATINET   27    Win2 接管了资源,成为目前群集的工作节点 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744712kFdi.png" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744730Lazx.png" \* MERGEFORMATINET   28  重新启动win1 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744745g883.jpg" \* MERGEFORMATINET Windowns  server2003集群完成配置   五  :配置SQL Server 2005 群集 1说明:如果群集环境不需要安装报表服务(SQL Server Reporting Services),可以忽略此步骤。 安装IIS   2    打开组件服务---计算机---我的电脑---属性—安全配置,选择administrator 用户登陆,输入administrator 的密码。 这一步是必须的,否则在安装SQL server 2005 的候会出现COM+错误。 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077447844cHJ.gif" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077447977j94.gif" \* MERGEFORMATINET     3   配置MSDTC 到资源组 进入 CMD 运行 net stop msdtc msdtc –uninstall msdtc –install net start msdtc   此操作之后在群集组直接出现 MSDTC 资源 如果出现msdtc无法正常使用,也可以用此方法重新配置   一般性增加MSDTC资源方法: INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_140774481409IC.png" \* MERGEFORMATINET “资源类型”选择“分布式事务协调器(DTC)” INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077448256dP6.gif" \* MERGEFORMATINET   INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744854jfNM.gif" \* MERGEFORMATINET 选择仲裁盘和群集名作为其依存资源。完成 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744867nQMJ.gif" \* MERGEFORMATINET 
确定,完成MSDTC 配置。 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744885M46X.gif" \* MERGEFORMATINET   4   注意,在安装SQL server 2005 前, 如果主机是多核心的处理器,请修改boot.ini 文件,把CPU 核心数 改为1 .可以在msconfig 选项直接选择修改 ,这个是2005 本身的bug,等完成安装后打SP3 或更高的补丁。 补丁打完之后可修改回正常核心数量 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744896HzT9.gif" \* MERGEFORMATINET         5安装SQL Server 2005 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744939QYbK.png" \* MERGEFORMATINET 下一步 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077449503Df3.png" \* MERGEFORMATINET   INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744968I81t.png" \* MERGEFORMATINET 下一步(步骤2处理不好,会出现com+错误) INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077449795J34.png" \* MERGEFORMATINET   开始安装必备组件 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407744989AIgW.png" \* MERGEFORMATINET 系统配置检查 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745003rYzQ.png" \* MERGEFORMATINET   INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077450180cuh.gif" \* MERGEFORMATINET 输入注册信息 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745031baoA.png" \* MERGEFORMATINET 选择要安装的组件 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745057vz41.png" \* MERGEFORMATINET (所提供光盘只有SQL Server Database Services组件) 输入实例名:MSSQL2005 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745072podT.png" \* MERGEFORMATINET 输入虚拟服务器的名称:SH-sqldbc INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745107ArP0.png" \* MERGEFORMATINET 输入虚拟服务器名称,下一步(区别于集群虚拟服务器IP) INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745121U1uU.gif" \* MERGEFORMATINET 为虚拟服务器指定IP 地址,点击“添加” INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745126XcS5.gif" \* MERGEFORMATINET   为数据文件指定安装路径,请注意这里的S 盘是数据存储盘(ClusterData),千万不要把数据文件安装到仲裁盘(QDisk)上。 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745139mnRW.gif" \* MERGEFORMATINET 可以在集群管理器上分一下组 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745149zX6d.gif" \* MERGEFORMATINET 该用户其实应该是cluster,如果用administrator,会造成不能在远程计算机安装(后面述修改方法,也可以之前在域建好用户) INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745155lTGS.png" \* MERGEFORMATINET   INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745190BL3x.gif" \* MERGEFORMATINET INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077451973Bma.png" \* MERGEFORMATINET     INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745210d8k8.png" \* MERGEFORMATINET   INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077452234KZ9.png" \* MERGEFORMATINET 选择混合模式验证 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745234SblE.png" \* MERGEFORMATINET   INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745246Aqpq.png" \* MERGEFORMATINET   INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745262pPPB.png" \* MERGEFORMATINET   INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745273LV55.png" \* MERGEFORMATINET 开始安装 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745288YFsc.png" \* MERGEFORMATINET   INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745350t0Wp.png" \* MERGEFORMATINET 安装程序。 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745365spAH.png" \* MERGEFORMATINET   完成后在另一个节点安装。   六:解决远程不能安装问题,创建swg域用户,委托管理 1 打开域控制管理 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_14077453825h6y.png" \* MERGEFORMATINET 2     新建用户 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745628BIXb.png" \* MERGEFORMATINET   3     添加到组 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745724heZa.png" \* MERGEFORMATINET     4     添加到administrator组 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745737U5xo.png" \* MERGEFORMATINET   5     查看属性 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745745VMv1.jpg" \* MERGEFORMATINET   6     win1 win2 节点上加用户权限 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745754s7Nj.jpg" \* MERGEFORMATINET     7 添加到swg组 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745762t1Z5.jpg" \* MERGEFORMATINET   8 最后全部用swg用户等test.com域上的主机win1,win2 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745778Klvg.jpg" \* MERGEFORMATINET           七:安装完成后测试 1 win1上查看增加的资源 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745798o54e.jpg" \* MERGEFORMATINET       2  停止其win1节点,服务自动转移 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745807BB77.jpg" \* MERGEFORMATINET   INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745813HCSC.jpg" \* MERGEFORMATINET 八:访问数据库,导入数据 1  右键“数据库” “附加”
INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745821o56o.jpg" \* MERGEFORMATINET   2 导入整个数据库 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745830HtaT.jpg" \* MERGEFORMATINET   3 导入完成后,显示数据 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745846B7dG.jpg" \* MERGEFORMATINET   4 做故障转移,数据库可以正常被访问 INCLUDEPICTURE \d "http://blog.itpub.net/attachment/201408/11/29500582_1407745935DEw2.jpg" \* MERGEFORMATINET  
经典SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A: UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B: EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 但不在 TABLE2 的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用 (EXCEPT ALL),不消除重复行。 C: INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用 (INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 12、说明:使用外连接 A、left (outer) join: 左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。 SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧