我正在尝试生成数据库中所有数据的脚本,因此我可以将数据移动到另一台服务器上的相同数据库.在SQL Server 2012中,我右键单击源数据库
任务>生成脚本>脚本整个数据库和所有数据库对象>高级>脚本的数据类型:仅限数据
这给了我一个关于Cyclic依赖的错误.如果我将数据类型更改为脚本到架构和数据,它会生成正常的.如何解决此问题仅适用于数据?
操作结果从MyDatabase获取对象列表失败
详细报告:
Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptPublishException:脚本编写对象时发生错误.---> Microsoft.SqlServer.Management.Smo.SmoException:找到循环依赖项.在Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num,Dictionary
2 dictionary, List1 sortedList,HashSet1 visited, HashSet1 current)在Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(Int32 num,Dictionary2 dictionary, List1 sortedList,HashSet1 visited, HashSet1 current)在Microsoft .SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(的Int32 NUM,字典2 dictionary, List1排序列表,HashSet的1 visited, HashSet1电流)Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.DependencyGraphTraversal(的Int32 NUM,字典2 dictionary, List1排序列表,HashSet的1 visited, HashSet1电流)Microsoft.SqlServer2 dictionary) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDataSet(DataSet ds) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.SortDataSet(List.Management.Smo.SmoDependencyOrderer.SortDictionary (Dictionary 1 objectList,Dictionary2 idDictionary, DataSet ds) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ExecuteQueryUsingTempTable(List1 objectList,List 1 urns1 list, String query) at Microsoft.SqlServer.Management.Smo.SmoDependencyOrderer.ResolveTableOnlyDependencies() at …
我有几个关于如何从我的数据库访问数据的建议:
var allMyIds
= context.Database.ExecuteSqlCommand("select id from AspNetUserLogins");
var allMyIds
= context.Database.SqlQuery<string>("select id from AspNetUserLogins");
Run Code Online (Sandbox Code Playgroud)
如果有人可以解释这些之间的区别吗?
c# asp.net entity-framework sql-server-2012 entity-framework-6
我使用Visual Studio 2012在C#中创建了一个全新的MVC 4应用程序.我正在尝试连接到一个全新的SQL Server 2012(标准)实例,但我似乎无法正确设置我的连接字符串.
我的Web.config中的连接字符串:
<connectionStrings>
<add name="ConnectionStringName"
providerName="System.Data.SqlClient"
connectionString="Data Source=MyServerName;
Initial Catalog=MyDatabaseName;
Integrated Security=False;
User ID=MyUserID;Password=MyPassword;
MultipleActiveResultSets=True" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
每次从Visual Studio中进入ASP.NET配置时,页面都会加载,但只要我点击"安全性",我就会收到以下消息:
您选择的数据存储存在问题.这可能是由无效的服务器名称或凭据或权限不足引起的.它也可能是由未启用角色管理器功能引起的.单击下面的按钮可重定向到可以选择新数据存储的页面.
以下消息可能有助于诊断问题: 无法连接到SQL Server数据库.
我已经验证我的凭据是正确的(我可以使用它们通过SQL Management Studio进行连接).还有什么我可以检查的吗?我很难过.
更新:
我无法从SQL Management Studio(MSSQLSERVER)中连接到我的默认实例,因此我重新安装了SQL,创建了一个命名实例(LHSQLSERVER).现在我可以在SQL Management Studio中连接到该实例,但我仍然从ASP.NET配置中获得相同的错误.
另外需要注意的一点 - 我运行的aspnet_regsql工具来自Framework64\v4.0.30319文件夹.如果我使用.NET 4.5,这是正确的吗?
更新2:
我已经尝试用连接字符串替换连接字符串到我知道有效的远程站点(即mysite.winhost.com),但我仍然在ASP.NET网站配置工具中得到相同的错误?FWIW我也使用Windows 8,但我认为这不重要.
还有什么我可以检查的吗?
更新3:
我发现这篇帖子说你不再需要用于MVC 4的aspnet_regsql工具了,所以我重新运行了删除所有设置的工具,但是再一次,没有运气.有没有人以前用MVC 4做过这个?
更新4:
有关我找到的解决方案,请参阅下面的答案.
c# asp.net-mvc-4 .net-4.5 sql-server-2012 visual-studio-2012
我正在尝试使用SQL Server数据库项目来保留我们所有的表,存储过程,视图等脚本.我现在想要能够保留所有参考(或静态)数据.当工具或项目运行时,它将安装所有数据库对象并插入所有参考数据.
我在vs 2010中找到了类似的文章,但他们使用的是Team Edition for Database专业人员.
我已经创建了一个序列:
create sequence mainseq as bigint start with 1 increment by 1
Run Code Online (Sandbox Code Playgroud)
如何将此序列用作列的默认值?
create table mytable(
id bigint not null default mainseq -- how?
code varchar(20) not null
)
Run Code Online (Sandbox Code Playgroud) 我想基于第二个表中Select的值使用语句更新表中的多个列,以获取如下值:
UPDATE tbl1
SET (col1, col2, col3) = (SELECT colA, colB, colC
FROM tbl2
WHERE tbl2.id = 'someid')
WHERE tbl1.id = 'differentid'
Run Code Online (Sandbox Code Playgroud)
但是,它似乎不可能"设置"多个列名称 - 是否有替代方法而不是为每列编写单独的更新语句?
UPDATE tbl1
SET col1 = (SELECT colA FROM tbl2 WHERE tbl2.id = 'someid')
WHERE tbl1.id = 'differentid'
UPDATE tbl1
SET col2 = (SELECT colB FROM tbl2 WHERE tbl2.id = 'someid')
WHERE tbl1.id = 'differentid'
UPDATE tbl1
SET col3 = (SELECT colC FROM tbl2 WHERE tbl2.id = 'someid')
WHERE tbl1.id = 'differentid'
Run Code Online (Sandbox Code Playgroud) 注意:我检查了理解QUOTED_IDENTIFIER并且它没有回答我的问题.
我让我的DBA运行我在Prod服务器上制作的索引(他们查看并批准了它).
它就像我想要的那样加速了我的查询.但是,我开始遇到这样的错误:
作为开发人员,我通常会忽略这些设置.它从来都不重要.(9年以上).好吧,今天很重要.
我去看了一个失败的sprocs,它在创建sproc之前有这个:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Run Code Online (Sandbox Code Playgroud)
任何人都可以从应用程序开发人员的角度告诉我这些set语句的作用是什么? (在我的索引创建语句之前添加上面的代码并没有解决问题.)
注意:以下是我的索引的示例:
CREATE NONCLUSTERED INDEX [ix_ClientFilerTo0]
ON [ClientTable] ([Client])
INCLUDE ([ClientCol1],[ClientCol2],[ClientCol3] ... Many more columns)
WHERE Client = 0
CREATE NONCLUSTERED INDEX [IX_Client_Status]
ON [OrderTable] ([Client],[Status])
INCLUDE ([OrderCol1],[OrderCol2],[OrderCol3],[OrderCol4])
WHERE [Status] <= 7
GO
Run Code Online (Sandbox Code Playgroud) 当我设置它时,我忽略了保留期.我的数据库变得非常大,所以我希望减小它的大小.如果我只是更改保留期(它是365),则会导致SSIS运行我的包时出现问题.我甚至以小增量更改了它,但删除语句会创建阻止新作业运行的锁.
任何想法如何解决这个问题?我想过要创建一个新的SSISDB.
我试图通过执行自定义Sql使用Entity Framework Migration创建FULL TEXT索引.
我的迁移类看起来像这样:
public partial class DocumentContentFullTextIndex : DbMigration
{
public override void Up()
{
AlterColumn("dbo.Attachments", "ContentType", c => c.String(maxLength: 260));
Sql("CREATE FULLTEXT CATALOG FullTextIndexes AS DEFAULT;", true);
Sql(@"CREATE FULLTEXT INDEX ON [Attachments](
Content
TYPE COLUMN ContentType
Language 'ENGLISH'
)
KEY INDEX [PK_dbo.Attachments]
ON FullTextIndexes;", true);
}
public override void Down()
{
AlterColumn("dbo.Attachments", "ContentType", c => c.String(maxLength: null));
Sql("DROP FULLTEXT INDEX ON [Attachments]");
Sql("DROP FULLTEXT CATALOG FullTextIndexes");
}
}
Run Code Online (Sandbox Code Playgroud)
当我从MSSQL管理工作室运行它时,一切都很完美,SQL完全符合我的预期.
但是当从迁移项目运行时,第二个Sql请求会触发异常
超时已过期.操作完成之前经过的超时时间或服务器没有响应.
带-Verbose标志的完整堆栈跟踪:
Update-Database -ConnectionStringName DatabaseContext -Verbose
Using …Run Code Online (Sandbox Code Playgroud) full-text-indexing sql-server-2012 ef-migrations entity-framework-6
我对SQL Server有一个小问题:如何从这个表中获取最近30天的信息
样本数据:
Product:
Pdate
----------
2014-11-20
2014-12-12
2014-11-10
2014-12-13
2014-10-12
2014-11-15
2014-11-14
2014-11-16
2015-01-18
Run Code Online (Sandbox Code Playgroud)
基于此表数据,我想要输出如下
pdate
-------
2014-11-20
2014-12-12
2014-12-13
2014-11-16
Run Code Online (Sandbox Code Playgroud)
我试过这个查询
SELECT *
FROM product
WHERE pdate >= DATEADD(day, -30, getdate()).
Run Code Online (Sandbox Code Playgroud)
但它现在给出了确切的结果.请告诉我如何在SQL Server中解决此问题
sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012
sql-server-2012 ×10
sql-server ×3
c# ×2
sql ×2
ssis ×2
t-sql ×2
.net-4.5 ×1
asp.net ×1
database ×1
sequence ×1