2009-03-03 71 views
5

我写了SQL语句(存储在文本文档中),它将数据加载到SQL Server数据库中。这些陈述需要每天重复。一些语句使用NewId()函数来填充数据库中的键控字段,并且这可以正常工作。虽然我正在编写应用程序来复制这些语句,但我希望使用Access查询和宏,而不是将查询复制并粘贴到SQL Server中,从而每天为我节省时间。所有工作正常,但我找不到任何功能,将取代SQL NewId()函数。有人存在还是存在解决方法?我正在使用SQL Server 2005和Access 2007.是否存在与SQL Server NewId()函数相同的Access?

+0

“复制和粘贴查询到SQL服务器,从而节省了我的时间每天都在”。你可能会惊讶你可以在SQL Server中做些什么来节省你的时间。 – 2014-01-19 01:43:55

回答

-2

我能想到的唯一解决方法是在类型为“复制ID”的访问数据库中定义列并将其设置为自动编号字段。这将自动为每一行生成一个唯一的GUID,并且根本不需要使用newid()。在SQL服务器中,您只需为列“newid()”设置默认值即可。

+0

GUID在Access中不能正常工作:http://trigeminal.com/usenet/usenet011.asp?1033。但它们不是必需的 - 只需要一个自动编号。 – 2009-03-04 04:55:35

1

在matt的回答中,您可以简单地使用pass-through query,并使用您现有的来自MS Access的查询。

-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中执行一个函数来做,但也许有人可以启发我为什么我错了。

相关问题