在我们的Azure SQL Service db中,我们有一个用于跟踪用户操作的表App_Tracking。我们需要增加日志缓冲区的大小,因此我首先将所有记录复制到使用以下SQL语句定义的存档表中
CREATE TABLE [dbo].[App_Tracking_Nov20_2015](
[ID] [int] IDENTITY(1,1) NOT NULL,
[UserID] [nvarchar](50) NOT NULL,
[App_Usage] [nvarchar](1024) NOT NULL,
[Timestamp] [datetime] NOT NULL ) 然后,使用SQL Management Studio 2012,我使用以下命令重新创建了原始表:Drop/Create script Generation:
USE [tblAdmin] GO
/****** Object: Table [dbo].[App_Tracking] Script Date: 11/21/2015 11:42:01 AM ******/
DROP TABLE [dbo].[App_Tracking] GO
/****** Object: Table [dbo].[App_Tracking] Script Date: 11/21/2015 11:42:01 AM ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[App_Tracking](
[ID] [int] IDENTITY(1,1) NOT NULL,
[UserID] [nvarchar](50) NOT NULL,
[App_Usage] [nvarchar](4000) NOT NULL,
[Timestamp] [datetime] NOT NULL,
CONSTRAINT [PrimaryKey_ 7c88841f-aaaa-bbbb-cccc- c26fe6a5720e] PRIMARY KEY CLUSTERED (
[ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) )
GO 这是SMS2012为您创建的自动删除/创建
然后,我使用EXEC sp_updatestats更新了App_Admin上的统计数据
问题是我不能再程序化地向这个表中添加记录了。
如果我从manage.windowsazure.net打开App_Admin并“在Visual Studio中打开”,我就可以手动向其中添加一条记录。但是如果我在SMS2012中运行代码
USE [tblAdmin] GO
UPDATE [dbo].[App_Tracking] SET
[UserID] = 'e146ba22-930c-4b22-ac3c-15da47722e75' ,
[App_Usage] = 'search search: Bad Keyword: asdfadsfs' ,
[Timestamp] = '2015-11-20 20:00:18.700'
GO 不会更新任何内容,但不会抛出错误。
如果我以编程方式使用
var adminContext = new App_AdminEntities();
string prunedAction = action.Length <= 4000 ? action : action.Trim().Substring (0, 4000); // insure we don't fault on overflow of too long a keyword list
var appTracking = new App_Tracking
{
UserID = userId,
PP_Usage = prunedAction,
Timestamp = DateTime.Now
};
try {
adminContext.App_Tracking.Add(APPTracking);
adminContext.SaveChanges();
adminContext.Dispose();
}我在SaveChanges (这是.net SQL db函数)上抛出一个错误,我做错了什么
发布于 2015-11-23 19:45:08
好了,我找到了问题所在。结果是我没有更新相关的EDMX文件,因此错误是由内部实体验证抛出的-它有点隐藏在幕后-
https://stackoverflow.com/questions/33847092
复制相似问题