2009-06-12 28 views
0

我有一个客户端需要更新的数据库。他们喜欢使用访问。一些表格随机成为只读对象。任何想法为什么?使用Access来更改SQL表。表随机变为只读

他们使用Access 2007和MS SQL 2005

SQL表:

CREATE TABLE [dbo].[Users](
    [SyncGroup] [varchar](20) NULL, 
    [UserID] [varchar](20) NOT NULL, 
    [Password] [varchar](20) NOT NULL, 
    [Restriction] [text] NULL DEFAULT (' '), 
    [SiteCode] [varchar](20) NULL, 
    [Group] [varchar](20) NULL, 
    [EmpId] [varchar](20) NULL, 
    [TimeZoneOffset] [int] NULL, 
    [UseDaylightSavings] [bit] NULL, 
    PRIMARY KEY ([UserID])) 
+0

如果您可以提供有关症状的描述(从用户的角度来看)以及所获得的任何错误消息的准确措辞,这会有所帮助。 – 2009-06-12 15:59:25

+0

没有错误消息,所有记录都变为只读。这是一个奇怪的问题。就在今天一张桌子工作正常,然后它变成只读。我甚至让客户端删除并重新映射表。没有运气。 – NitroxDM 2009-06-12 16:29:09

回答

3

访问真的很喜欢每个表上都有一个TimeStamp aka RowVersion字段。我不知道这是否会解决您的问题。

“在支持它们的服务器(如Microsoft SQL Server)上,时间戳记字段使更新记录更有效率。时间戳记字段由服务器维护,并在每次记录更新时更新。如果有时间戳字段, Microsoft Access需要仅检查唯一索引和时间戳记字段,以查看记录是否从服务器上次检索后发生了更改。否则,Microsoft Access必须检查记录中的所有字段。如果将时间戳字段添加到附加的表,重新附加表以便通知Microsoft Access新的字段。“

http://technet.microsoft.com/en-us/library/cc917601.aspx

+0

添加时间TimeStamp似乎正在工作。我需要进行更多的测试...但目前看起来不错。 – NitroxDM 2009-06-12 21:29:35

0

是用户访问数据库,而你要做的东西iwth SQL?如果是这样,那么您将收到一条错误消息,指出数据库正在使用并且是只读的。没有人可以在数据库中,当你通过sql来处理它时。

+0

我认为我们需要量化“用SQL来做事”。通过“用SQL做东西”,你的意思是改变模式吗?或操纵数据?除此之外,还有一个自动化系统,每隔3分钟左右从桌面上读取数据。我没有注意到操纵数据的可重现问题。 Access只是决定它不会允许更改。 – NitroxDM 2009-06-12 17:55:41

0

听起来像是权限问题。你是否仔细追踪谁在改变模式?您可能有不允许使用某些其他用户所做更改的用户。