相关疑难解决方法(0)

如何在不知道其名称的情况下删除SQL默认约束?

在Microsoft SQL Server中,我知道查询是否存在列的默认约束并删除默认约束是:

IF EXISTS(SELECT * FROM sysconstraints
  WHERE id=OBJECT_ID('SomeTable')
  AND COL_NAME(id,colid)='ColName'
  AND OBJECTPROPERTY(constid, 'IsDefaultCnst')=1)    
ALTER TABLE SomeTable DROP CONSTRAINT DF_SomeTable_ColName
Run Code Online (Sandbox Code Playgroud)

但由于以前版本的数据库中的拼写错误,约束的名称可能是DF_SomeTable_ColNameDF_SmoeTable_ColName.

如何在没有任何SQL错误的情况下删除默认约束?默认约束名称不会显示在INFORMATION_SCHEMA表中,这会使事情变得有点棘手.

因此,类似于"删除此表/列中的默认约束"或"删除DF_SmoeTable_ColName",但如果无法找到它,则不会出现任何错误.

sql t-sql sql-server

190
推荐指数
5
解决办法
16万
查看次数

对象'DF __*'依赖于列'*' - 将int更改为double

基本上我在我的EF数据库中有一个表,它具有以下属性:

public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Image { get; set; }
public string WatchUrl { get; set; }
public int Year { get; set; }
public string Source { get; set; }
public int Duration { get; set; }
public int Rating { get; set; }
public virtual ICollection<Category> Categories { get; set; }
Run Code Online (Sandbox Code Playgroud)

它工作正常但是当我将Rating的int更改为double时,我在更新数据库时遇到以下错误:

对象'DF_ Movies _Rating__48CFD27E'取决于列'评级'.ALTER TABLE ALTER COLUMN评级失败,因为一个或多个对象访问此列.

有什么问题?

sql database sql-server entity-framework entity-framework-4

155
推荐指数
6
解决办法
13万
查看次数

如何使用SQL语法更改主键约束?

我有一个表在主键约束中缺少一列.我不想通过SQL Server进行编辑,而是将其放在一个脚本中,以将其添加为更新脚本的一部分.

我可以使用什么语法来执行此操作?我必须放弃并重新创建关键约束吗?

sql-server

93
推荐指数
2
解决办法
15万
查看次数

为什么SQL Server会继续创建DF约束?

我正在尝试在SQL中创建升级和回退脚本.升级脚本添加如下列:

IF NOT EXISTS (SELECT * FROM sys.columns WHERE Name = N'ColumnName' 
    AND object_id = OBJECT_ID(N'[dbo].[TableName]'))

ALTER TABLE TableName
    ADD ColumnName bit NOT NULL DEFAULT(0) 
Run Code Online (Sandbox Code Playgroud)

回退脚本会删除列,如下所示:

IF EXISTS (SELECT * FROM sys.columns WHERE Name = N'ColumnName' 
    AND object_id = OBJECT_ID(N'[dbo].[TableName]'))

ALTER TABLE TableName
    DROP COLUMN ColumnName
Run Code Online (Sandbox Code Playgroud)

但是,回退脚本会抛出此错误:

Msg 5074, Level 16, State 1, Line 5
    The object 'DF__TableName__ColumnName__1BF3D5BD' is dependent on column 'ColumnName'.
Msg 4922, Level 16, State 9, Line 5
    ALTER TABLE DROP COLUMN ColumnName failed because one or …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008

39
推荐指数
2
解决办法
4万
查看次数

EF5代码优先 - 使用迁移更改列类型

我是EF5 Code First的新手,在开始工作项目之前,我正在修改概念验证.

我最初创建了一个看起来像的模型

public class Person {
  public int Id { get; set; }
  public string FirstName { get; set;}
  public string Surname {get;set;}
  public string Location {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我添加了一些记录,使用了一个我坚持在顶部的MVC应用程序.

现在我想将Location列更改为枚举,如:

public class Person {
  public int Id { get; set; }
  public string FirstName { get; set;}
  public string Surname {get;set;}
  public Locations Location {get;set;}
}

public enum Locations {
  London = 1,
  Edinburgh = 2,
  Cardiff = 3
}
Run Code Online (Sandbox Code Playgroud)

当我添加新的迁移时,我得到:

AlterColumn("dbo.People", "Location", c => c.Int(nullable: false));
Run Code Online (Sandbox Code Playgroud)

但是当我运行update-database时出现错误 …

c# ef-code-first ef-migrations entity-framework-5

37
推荐指数
2
解决办法
2万
查看次数

添加uniqueidentifier列并添加默认值以生成新的guid

我有以下SQL命令:

ALTER TABLE dbo.UserProfiles
ADD ChatId UniqueIdentifier NOT NULL,
UNIQUE(ChatId),
CONSTRAINT "ChatId_default" SET DEFAULT newid()
Run Code Online (Sandbox Code Playgroud)

我希望能够使这个列成为唯一的,并且我希望它能够在每次向表中添加行时生成新的guid.此列不是IDENTITY列,因为我已经有一列.这是分开的.如何将此列添加到已包含用户的表中.

sql sql-server sql-server-2008

21
推荐指数
2
解决办法
6万
查看次数

实体框架在迁移之前执行SQL

我正在开发一个使用Entity-Framework 6代码优先的现有项目.我需要在迁移运行之前运行一些SQL.

我有一个带有种子方​​法的DbMigrationsConfiguration类,但种子在迁移后运行.

我认为如果我在构造函数中运行SQL但它无法获取对上下文的引用,它将起作用.

有谁知道如何做到这一点?

ef-code-first entity-framework-6

13
推荐指数
1
解决办法
8176
查看次数