如何将SQL查询从SQL Server 2008升级到2012

时间:2017-08-17 06:28:03

标签: sql-server sql-server-2008 sql-server-2012

我想要一个使用SQL Server作为其数据库的CRM;我发现this link - 有更好的选择吗?

我编译了Tustena.csproj文件,但是我收到了一个错误(即对空对象的引用),所以我想创建数据库,但SQL查询已经过时了。

CREATE DATABASE [TustenaOS]  
ON (NAME = N'Tustena_Data', FILENAME = N'{0}\TustenaOS.mdf', SIZE = 3, FILEGROWTH = 10%) 
   LOG ON (NAME = N'Tustena_Log', FILENAME = N'{1}\TustenaOS_log.ldf', SIZE = 3, MAXSIZE = 2146, FILEGROWTH = 10%)
GO

exec sp_dboption N'TustenaOS', N'autoclose', N'false'
GO

exec sp_dboption N'TustenaOS', N'bulkcopy', N'false'
GO

exec sp_dboption N'TustenaOS', N'trunc. log', N'true'
GO

exec sp_dboption N'TustenaOS', N'torn page detection', N'true'
GO

exec sp_dboption N'TustenaOS', N'read only', N'false'
GO

exec sp_dboption N'TustenaOS', N'dbo use', N'false'
GO

exec sp_dboption N'TustenaOS', N'single', N'false'
GO

exec sp_dboption N'TustenaOS', N'autoshrink', N'true'
GO

exec sp_dboption N'TustenaOS', N'ANSI null default', N'false'
GO

exec sp_dboption N'TustenaOS', N'recursive triggers', N'false'
GO

exec sp_dboption N'TustenaOS', N'ANSI nulls', N'false'
GO

exec sp_dboption N'TustenaOS', N'concat null yields null', N'false'
GO

exec sp_dboption N'TustenaOS', N'cursor close on commit', N'false'
GO

exec sp_dboption N'TustenaOS', N'default to local cursor', N'false'
GO

exec sp_dboption N'TustenaOS', N'quoted identifier', N'false'
GO

exec sp_dboption N'TustenaOS', N'ANSI warnings', N'false'
GO

exec sp_dboption N'TustenaOS', N'auto create statistics', N'true'
GO

exec sp_dboption N'TustenaOS', N'auto update statistics', N'true'
GO

use [TustenaOS]
GO

CREATE TABLE [dbo].[ACTIVITYMOVELOG] 
(
    [ID] [bigint] IDENTITY (1, 1) NOT NULL ,
    [ACID] [bigint] NOT NULL ,
    [ACTIONTYPE] [tinyint] NOT NULL ,
    [PREVVALUE] [nvarchar] (500) NULL ,
    [NEXTVALUE] [nvarchar] (500) NULL ,
    [MOVEDATE] [datetime] NOT NULL ,
    [OWNERID] [bigint] NOT NULL 
) ON [PRIMARY]
GO 

我在SQL Server 2008中有这个查询,SQL Server 2012中的等价物是什么?

如何将SQL查询从SQL Server 2008升级到2012?

更新:我安装了SQL Server2008并运行查询但是第一行出现此错误

  

Msg 5105,Level 16,State 2,Line 2   发生文件激活错误。物理文件名“{0} \ TustenaOS.mdf”可能不正确。诊断并更正其他错误,然后重试该操作。   Msg 1802,Level 16,State 1,Line 2   CREATE DATABASE失败。无法创建列出的某些文件名。检查相关错误。

     

消息15010,级别16,状态1,过程sp_dboption,第64行   数据库'TustenaOS'不存在。提供有效的数据库名称。要查看可用的数据库,请使用sys.databases。

更新2 :谢谢你Jeroen Mostert,现在在这一行我替换了这个

'   ON (NAME = N'Tustena_Data', FILENAME =N'{0}\TustenaOS.mdf', SIZE = 3, FILEGROWTH = 10%) LOG ON (NAME =N'Tustena_Log', FILENAME = N'{1}\TustenaOS_log.ldf', SIZE = 3, MAXSIZE =2146, FILEGROWTH = 10%) GO'

用这个

'CREATE DATABASE [TustenaOS]'

但现在在这一行

    INSERT [TUSTENA_DATA] ([COMPANYNAME], [LICENCE], [PHONE], [FAX], [EMAIL], [WEBSITE], [ADDRESS], [CITY], [PROVINCE], [REGION], [STATE], [ZIPCODE], [ACTIVE], [MAXUSER], [ADMINGROUPID], [PHONENORMALIZE], [CUSTOMTYPES], [LASTACCESS], [TAXIDENTIFICATIONNUMBER], [VATID], [ESTIMATEDDATEDAYS], [DEBUGMODE], [FROMWEB], [GUID], [PIN], [DEFAULTWEBUSER], [IDAGENDA], [DATASTORAGECAPACITY], [SMSCREDIT], [SMSORIGIN], [LINKFORVOIP], [INTERNATIONALPREFIX], [DISKSPACE]) VALUES ('Tustena Custom Company', '', '', '', '', '', '', '', '', '', '', getdate(), 1, 20, 1, NULL, 0, getdate(), '', '', 90, 1, NULL, 'e30df889-6390-4dff-ba54-5d9137c4757d', 99999, 1, NULL, 20, 9, NULL, 'test://', '', 30 )

我有这个错误:

  

Msg 545,Level 16,State 1,Line 3   当IDENTITY_INSERT设置为ON或复制用户插入NOT FOR REPLICATION标识列时,必须为表'TUSTENA_DATA'中的标识列指定显式值。

2 个答案:

答案 0 :(得分:1)

  

物理文件名' {0} \ TustenaOS.mdf'可能不正确

是的,它不正确 - 您在SQL Server管理工作室中直接使用了C#格式化字符串 - 这是行不通的。您应该提供没有{0}{1}的正确路径。

db_option存储过程is deprecated in SQL Server 2012

如果您想要insert into an identity column,则需要运行:

SET IDENTITY_INSERT dbo.[tableName] ON
INSERT ... -- insert identity values
SET IDENTITY_INSERT dbo.[tableName] OFF

另见this answer

请不要在一个原始问题中添加多个问题。

答案 1 :(得分:0)