Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用关系重新创建整个SQL Server数据库_Sql_Database_Sql Server 2012 - Fatal编程技术网

使用关系重新创建整个SQL Server数据库

使用关系重新创建整个SQL Server数据库,sql,database,sql-server-2012,Sql,Database,Sql Server 2012,我使用了SQL server 2012,并创建了一个具有许多关系的大型数据库。今天,我意识到在“NVARCHAR”上使用“NCHAR”会在字符串的末尾添加空间,这是我不喜欢的。有没有办法用关系重新创建数据库。我已尝试为表“删除并创建”,但需要删除所有关系并重新定义它们,这非常耗时。是否可以只更改受影响的表?像这样: SELECT 'alter table '+s.name+'.'+t.name+ ' alter column '+c.name+' nvarchar('+convert(varch

我使用了SQL server 2012,并创建了一个具有许多关系的大型数据库。今天,我意识到在“NVARCHAR”上使用“NCHAR”会在字符串的末尾添加空间,这是我不喜欢的。有没有办法用关系重新创建数据库。我已尝试为表“删除并创建”,但需要删除所有关系并重新定义它们,这非常耗时。

是否可以只更改受影响的表?像这样:

SELECT 'alter table '+s.name+'.'+t.name+
' alter column '+c.name+' nvarchar('+convert(varchar(11),c.max_length/2)+') go'
FROM    sys.tables as T
inner join sys.schemas as s
on T.[schema_id]=s.[schema_id]
inner join sys.columns as C
on T.[object_id]=C.[object_id]
and c.system_type_id=239--nchar type

,在此之前,不要忘记使用相同的机制生成update语句以删除多余的空格。

谢谢,但我不知道它是如何工作的,我应该替换哪些单词?(t.name到表名,c.name到列名还有什么?)+数据库中没有记录,因此不需要删除空格。如果运行脚本,它将为每个具有nchar数据类型的列生成alter脚本。应该运行结果脚本。如果没有数据,请忘记更新