微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – 有关在MS Access中使用SQL Server GUID的建议

我正在将现有的MS Access后端升级sql Server 2008,因为我们要使用 SQL Server Merge replication,所以我必须将所有当前主键(当前标准的自动增量整数)更改为GUID.

以下是问题:

>有关将主键从整数更改为GUID的任何建议吗?
>有关从Access客户端中的代码使用和操作GUID的任何建议吗?
>我应该使用哪种sql Server GUID类型?

解决方法

Chris是正确的说(1)你不需要GUIDS进行合并复制和(2)只有一种GUID类型,但你必须知道:

> GUID可以按照不同的规则生成.你可以查看这个here
>设置复制时,sql将系统地添加GUID
(作为新的序列生成)到
每个表,如果它还没有
存在,并将其称为rowguid.当然,如果每个表中已经有这样的GUID / newSequentialId,sql将使用它. BUt我不建议你将复制GUID与PK GUID’混合’:你可以将GUID类型的所有主键声明为’newSequentialIds’,但是(a)你将失去在客户端生成GUID值的可能性 – 见下文 – 和(b)你的PK将是“可预测的”,这个想法让我觉得不舒服……
>保持自动增量整数并通过复制管理其范围意味着大量开销(您必须为每个表/每个发布分配范围)以及从不同来源复制时潜在的冲突源.
>此外,一些特定于范围分配的sql错误this one仍未得到妥善解决:应用累积包5并未解决我们的问题,我们必须找到另一种方法来重新启动复制过程.
>无论如何,我深信,从整数切换到GUID作为主键是强制性的.造成这种情况的原因有很多,其中一个原因与这些范围管理有关,因为它们是头巾和夜间故障排除会议的潜在来源.

关于从整数到GUIDS的更改,我建议您编写一个分步模块,该模块将:

>在修改之前备份所有现有表
>为每个表添加GUID字段
>在请求时添加相应的FK字段
>通过使用现有关系构建的视图更新FK字段(基于整数字段构建)
>打破关系
>将PK从整数字段更改为GUID字段
>重建关系

花点时间编写此代码.在正常工作之前,您将多次使用它.您应该从DAO对象,tabledef,索引等中获利.请记住,您必须始终能够返回起点,因此不要忘记初始备份过程.

那么从VBA操纵GUID呢?有几点需要了解:

> GUID属于Variant类型
>可以并且很容易在应用程序的客户端生成GUID作为主键,正如我在here中提出的那样.
>当您尝试获取GUID值时
一个形式的控件(通常作为组合框中的链接字段),你会得到’?????’但没有价值.您必须引用记录集中的字段值才能获得正确的数据.您可以在应用中打开此类表单,转到“即时”窗口,然后尝试以下操作:

? myForm.myControl
?????

? myForm.recordset.fields("myFieldName")
{000581EB-9CBF-418C-A2D9-5A7141A686CC}

>在使用记录集(例如recordset.findfirst)浏览记录集时,可能必须将guid转换为字符串:

myFirstRecordset.FindFirst "stringFromGUID(myGuidId) = " & StringFromGUID(mySecondRecordset.Fields("myGuidId").Value)

原文地址:https://www.jb51.cc/mssql/79376.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐