使用Entity Framework(在我的例子中是代码),我有一个操作,需要我调用SaveChanges来更新DB中的一个对象,然后再次SaveChanges来更新另一个对象.(我需要第一个SaveChanges来解决EF无法确定首先更新哪个对象的问题).
我试过做:
using (var transaction = new TransactionScope())
{
// Do something
db.SaveChanges();
// Do something else
db.SaveChanges();
tramsaction.Complete();
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我在第二次SaveChanges调用时遇到异常,说"底层提供程序在打开时失败".内部异常表示我的机器上未启用MSDTC.
现在,我在其他地方看到了描述如何启用MSDTC的帖子,但似乎我还需要启用网络访问等.这听起来像是完全矫枉过正,因为没有涉及其他数据库,更不用说其他服务器了.我不想做一些会使我的整个应用程序不那么安全(或更慢)的东西.
当然必须有一个更轻量级的方法(理想情况下没有MSDTC)?!
msdtc entity-framework transactionscope sql-server-2012 entity-framework-5
我有一个包含现有powershell脚本的大型库,主要用于在SQL Server和文件系统之间运行一些复杂的逻辑和交互.
SQL交互通常通过cmdlet执行Invoke-SQLCmd.
最近我所有服务器上的SSMS版本都升级到了2012.这意味着我必须对我的代码进行一些更改才能删除对该引用的引用sqlserverprovidersnapin100,sqlservercmdletsnapin100因为这些引用在2012年已被弃用,有利于导入SQLPs模块.
这工作正常,但似乎SQLPs模块在某些时候改变当前位置PS SQLSERVER>而不是<local folder>,这使我的许多其他命令失败.例如,如果我Test-Path在网络驱动器上运行,它可以从该<local folder>位置正常工作,但将从该位置失败SQLSERVER.
这是一个已知的问题?是否有解决方法或设置我可以为此更改?
我担心的主要脚本超过1000行,并且在我们做出这个改变之前已经运行了两年没有问题,所以如果可以的话,我想避免对它进行逐行测试.
我正在运行SQL Server 2012企业版.我已经下载了AdventureWorks 2012 OLTP数据文件(包括.mdf 和.ldf).我将它们保存到我在解My Documents压缩文件的位置创建的AW文件夹中.我转到SQL Server Management Studio(SSMS),右键单击数据库,然后在上下文菜单中单击"附加".在对话框中,我单击查找.
用户界面不允许我导航到文件夹.我尝试键入文件的完整路径,然后我收到以下错误:
无法访问服务器上的指定路径或文件.验证您是否具有必要的安全权限以及路径或文件是否存在.
我关闭了SSMS并重新启动它,这次以管理员身份运行.同样糟糕的结果.
这不应该是这么难.将AdventureWorks2012数据库成功附加到SSMS的确切步骤是什么?
谢谢!
我的数据库表中有一列UNIX时间戳,它来自科威特时区的系统.
我的数据库服务器的时区是Eastern Time US & Canada.现在我需要使用SQL查询将UNIX时间戳转换为科威特时区日期值.
谁能告诉我如何将这个UNIX时间戳转换为科威特时区的日期值?
我需要创建一个SQL脚本来确定SQL Server 2012数据库中是否存在序列.我熟悉确定存储过程是否存在而不是序列的过程.谢谢.
我有一个搜索屏幕,用户有5个要搜索的过滤器.
我根据这些过滤器值构建了一个动态查询,并一次构建了第10页结果.
这在SQL2012中正常使用OFFSET和FETCH,但我使用两个查询来执行此操作.
我想显示10个结果并显示查询找到的总行数(假设为1000).
目前我通过运行两次查询来执行此操作- 一次为总计数,然后再次为10行.
有没有更有效的方法来做到这一点?
我想在所有数据库中列出所有表名,列名,模式名和所有者,并编写下面的代码.我不知道从何处获取架构所有者详细信息以添加到我的查询中.请帮忙 .
select c.name as colomn_name , t.name as table_name , s.name as schema_name
from sys.columns c
inner join sys.tables t on c.object_id=t.object_id
INNER JOIN sys.schemas AS s ON t.[schema_id] = s.[schema_id]
Run Code Online (Sandbox Code Playgroud) 我在SQL Server中有一个包含两个数字列的表.必须至少填充其中一个数字字段.如何编写检查约束来验证这一点?
问题陈述:
给定一系列
x -> y无符号整数
,其中x和y都在范围内 ,并且(或者在交替情况下为64) 找到最小可用值 不等于或 不在现有集合中 ,其中现有集合是任意子集0 -> 2nn0 -> 32xyx -> y
我正在使用数据库中的IPv4和IPv6子网建模.每个子网由其起始地址和结束地址定义(我通过业务规则确保范围的完整性).由于IPv6太大而无法存储在bigint数据类型中,因此我们将IP地址存储为binary(4)或binary(16).
相关联的数据被存储在subnet,dhcp_range与ip_address表:
subnet表中.子网范围始终为2 n(根据CIDR /网络掩码的定义).0..*存储在ip_address表中的IP地址.IP地址必须位于起始地址和结束地址之间,但不等于其关联子网定义的范围.0..*存储在dhcp_range表中的DHCP范围.与子网类似,每个DHCP范围定义开始和结束地址.DHCP范围受相关子网范围的限制.DHCP范围不会相互重叠.我想要确定的是子网的下一个可用IP:
我正在寻找一个解决方案,找到最小可用地址或所有可用地址.
我最初的想法是生成由子网范围绑定的可能地址(数字)范围,然后根据使用的集删除地址:
declare @subnet_sk int = 42
;with …Run Code Online (Sandbox Code Playgroud) 嗨,我有一个餐桌设施.每天持有一个分数(每天可以报告多个分数,两者都有效)
我需要按月计算得分的第90个百分点,标准差和平均值.
设施:
Id Month Date score
1 Jan 1 5
1 Jan 1 5
1 Jan 2 3
1 Jan 3 4
1 Jan 4 4
1 Jan 5 4
1 Feb 1 5
1 Feb 1 5
1 Feb 2 3
1 Feb 3 4
1 Feb 4 4
1 Feb 5 4
Run Code Online (Sandbox Code Playgroud)
有什么办法吗?
谢谢你的帮助.
sql-server-2012 ×10
sql ×6
sql-server ×5
fetch ×1
math ×1
msdtc ×1
paging ×1
powershell ×1
range ×1
schema ×1
timezone ×1