我编写了SQL语句(存储在文本文档中),将数据加载到SQL Server数据库中。这些陈述需要每天重复。一些语句使用NewId()
函数来填充数据库中的键控字段,这样可以正常工作。当我正在编写应用程序来复制这些语句时,我想使用Access查询和宏而不是将查询复制并粘贴到SQL Server中,从而节省了我每天的时间。一切正常,但我找不到任何将取代SQL NewId()
函数的函数。是存在还是有解决方法?我正在使用SQL Server 2005和Access 2007。
答案 0 :(得分:1)
除了matt的答案之外,你可以简单地使用pass-through query并使用MS Access现有的工作查询。
答案 1 :(得分:0)
解决方案是在代码中插入stguidgen()函数,您可以在此处找到它:http://trigeminal.fmsinc.com/code/guids.bas
答案 2 :(得分:-2)
我能想到的唯一解决方法是在访问数据库中定义类型为“Replication ID”的列,并使其成为自动编号字段。这将自动为每一行生成一个唯一的GUID,您根本不需要使用newid()。在SQL Server中,您只需为“newid()”列创建默认值。
答案 3 :(得分:-2)
同样,这里似乎有些混乱。
如果我理解正确:
您有一个Access前端。
您有一个SQL Server 2005后端。
您需要的是能够在SQL Server表中生成GUID。所以,答案是建议在Access中添加一个类型为ReplicationID的AutoNumber字段对它没有帮助,因为该表不是Jet表,而是SQL Server表。
SQL当然可以作为直通查询执行,它会将所有内容传递给SQL Server进行处理,但我想知道为什么SQL Server中没有这个字段的默认值? SQL Server 2005表可以没有NewId()作为默认值吗?或者是否有其他方法使字段填充新的GUID?我似乎记得有关使用GUID并将它们标记为“不用于复制”的内容(我目前无权访问SQL Server以查看此内容)。
对我来说,最好让数据库引擎做这种事情,而不是在SQL中执行一个函数来做,但也许有人可以告诉我为什么我错了。