我有一个表(MainTable)有超过600,000条记录.它通过JoinTable父/子类型关系中的第二个表()连接到自身:
SELECT Child.ID, Parent.ID
FROM MainTable
AS Child
JOIN JoinTable
ON Child.ID = JoinTable.ID
JOIN MainTable
AS Parent
ON Parent.ID = JoinTable.ParentID
AND Parent.SomeOtherData = Child.SomeOtherData
Run Code Online (Sandbox Code Playgroud)
我知道每个子记录都有父记录,JoinTable中的数据是精确的.
当我运行此查询时,运行需要几分钟.但是,如果我使用左连接加入Parent,则运行时间<1秒:
SELECT Child.ID, Parent.ID
FROM MainTable
AS Child
JOIN JoinTable
ON Child.ID = JoinTable.ID
LEFT JOIN MainTable
AS Parent
ON Parent.ID = JoinTable.ParentID
AND Parent.SomeOtherData = Child.SomeOtherData
WHERE ...[some info to make sure we don't select parent records in the child dataset]...
Run Code Online (Sandbox Code Playgroud)
我理解INNER JOINa和a 之间结果的差异LEFT JOIN …
我正在寻找一种使用小于和大于符号在sql select查询中构建case语句的方法.例如,我想根据变量选择排名:
DECLARE @a INT
SET @a = 0
SELECT CASE
WHEN @a < 3 THEN 0
WHEN @a = 3 THEN 1
WHEN @a > 3 THEN 2
END
Run Code Online (Sandbox Code Playgroud)
我想把它写成:
DECLARE @a INT
SET @a = 0
SELECT CASE @a
WHEN < 3 THEN 0
WHEN 3 THEN 1
WHEN > 3 THEN 2
END
Run Code Online (Sandbox Code Playgroud)
...但SQL不允许我以这种方式使用<和>符号.有没有办法可以做到这一点是SQL 2005,还是我需要像第一个那样使用代码.
只需要一次代码的原因是因为它会使代码更易读/可维护,而且因为我不确定SQL服务器是否必须为每个CASE语句运行计算.
我正在寻找一个VB.NET案例声明equivelent:
Select Case i
Case Is < 100
p = 1
Case Is >= 100
p = 2
End Select
Run Code Online (Sandbox Code Playgroud)
也许这在SQL中是不可能的,没关系,我只想确认一下.
我们希望将dbproj升级到sqlproj,以便我们可以将它指向新的SQL 2012数据库.我们现在有一个程序读取.dbschema xml文件以查找所有表和列并从中检索信息.我们使用这些数据来构建我们自己的自定义类.
新的sqlproj文件现在生成一个dacpac,我们想要进行干预以获取我们需要的数据.我写了以下内容来尝试遍历dacpac并获取我需要的信息:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.SqlServer.Dac;
using Microsoft.SqlServer.Dac.Extensions;
using Microsoft.SqlServer.Dac.Model;
namespace DacPacReader
{
class Program
{
static void Main(string[] args)
{
using (System.IO.TextWriter writter = new System.IO.StreamWriter(@"c:\temp\output.txt"))
{
using (TSqlModel model = new TSqlModel(@"C:\temp\Data.dacpac"))
{
var allTables = model.GetObjects(DacQueryScopes.All, ModelSchema.Table);
foreach (var table in allTables)
{
writter.WriteLine(table.Name);
foreach (var column in table.GetChildren().Where(child => child.ObjectType.Name == "Column"))
{
writter.WriteLine("\t" + column.Name);
writter.WriteLine("\tProperties:");
foreach (var property in column.ObjectType.Properties)
{
writter.WriteLine("\t\t" + property.Name …Run Code Online (Sandbox Code Playgroud) 当我尝试在Visual Studio 2012(TFS 2012)中从源代码管理资源管理器中查看.sql文件时,我收到以下错误消息:
TF10187:无法打开文档
文件路径\文件名
用户取消了保存对话框

它只发生在SQL文件中.该文件确实存在于TFSTemp文件夹中,我可以双击并从那里打开它.我需要更改以修复此错误消息?
我想在我的网站上添加面包屑,但我不太清楚如何去做.我已经能够使用以下代码获得基本工作:
<ol class="breadcrumb">
<li class="active">
@Html.ActionLink("Home", "Index", "Home")
@if (ViewContext.RouteData.Values["controller"] != "Home" && ViewContext.RouteData.Values["action"] != "Index")
{
@:> @Html.ActionLink(ViewContext.RouteData.Values["controller"].ToString(), "Index", ViewContext.RouteData.Values["controller"].ToString())
}
> @ViewBag.SubTitle
</li>
</ol>
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,这实际上并没有跟踪你的历史,它只是告诉你
Home > ControllerName > CurrentItem
Run Code Online (Sandbox Code Playgroud)
例如
Home > Members > Greg Dodd
Run Code Online (Sandbox Code Playgroud)
当您来自会员搜索页面时,这种方法很有效,但是如果您来自不同的页面,则会丢失该历史记录.如何使用MVC中的History创建痕迹痕迹?
我想我正在寻找的是:
Home > Controller1 > PreviousItem > ... > CurrentItem
Run Code Online (Sandbox Code Playgroud)
例如,如果你打开一个博客,然后是一个特定的博客项目,然后点击作者名称,你的面包屑应该是:
Home > Blog > SomeBlogTitle > AuthorName
Run Code Online (Sandbox Code Playgroud)
但是,如果您打开了作者列表然后选择了特定作者,则会看到使用相同控制器渲染的相同视图,但是面包屑应该显示:
Home > Authors > AuthorName
Run Code Online (Sandbox Code Playgroud) 我们在Visual Studio 2012中有一个SQL Server数据库项目(.sqlproj),我们将其用作数据库模式的源代码控制.它所做的一件很酷的事情是生成SQL以在我们发布代码时更新架构.
我们有3个配置文件设置 - 开发,测试,现场 - 这一切都正常.
最近我们将实时数据库从"简单"恢复更改为"完全"恢复.在我们尝试将下一个部署运行到开发和测试之前,一切都很棒.我们不希望在开发和测试时将恢复模式从简单更改为完全 - 我们无需更改它.但是,当我们发布数据库项目时,它现在想要设置它.
我想根据我使用的发布配置设置恢复模型.我已经尝试创建一个变量并在项目xml中分配它:
<Recovery>$(RecoveryModel)</Recovery>
Run Code Online (Sandbox Code Playgroud)
但它仍尝试在部署脚本中将其设置为"Full":
:setvar DefaultDataPath "C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\"
:setvar DefaultLogPath "C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\"
:setvar RecoveryModel "Simple"
GO
:on error exit
GO
/*
Detect SQLCMD mode and disable script execution if SQLCMD mode is not supported.
To re-enable the script after enabling SQLCMD mode, execute the following:
SET NOEXEC OFF;
*/
:setvar __IsSqlCmdEnabled "True"
GO
IF N'$(__IsSqlCmdEnabled)' NOT LIKE N'True'
BEGIN
PRINT N'SQLCMD mode must be enabled …Run Code Online (Sandbox Code Playgroud) 我们刚开始在公司做scrum.我们花了一些时间来估算使用计划扑克的努力,然后在详细任务完成后,对每项任务进行时间估算.
我们遇到的问题是时间估计总是错误的(通常估计过高).虽然我们都同意一项努力,让一个团队就任务的时间达成一致意见要困难得多 - 每小时需要1个人可能会花费3个小时.我们最终走到了中间的某个地方.
谁应该提出任务的时间估计以及何时发生?
这只是我们需要更多练习的事情,还是我们做错了?
我正在设置我的网站(C#/ SQL 2008)以允许使用Google身份验证器进行双因素身份验证.我有网站工作,从获取QR码到生成上一个/当前/下一个键(我很高兴接受3,以防时钟不同步).
显然,我们需要为每个用户生成一个密钥,否则每个用户都会拥有相同的一次性密码.
我的问题是存储此密钥的最佳做法是什么?我可以将它作为纯文本存储在users表中,还是应该加密?
authentication encryption sql-server-2008 google-authenticator
我正在尝试将我的.net网站部署到azure,作为TFS构建过程的一部分.我正在编写一个PowerShell脚本来执行此操作,但我遇到了set-AzureDeployment -Upgrade命令.我不确定是否有更简单的方法,但我正在尝试根据windows azure网站上的代码实现上传:http:
//www.windowsazure.com/en-us/develop/net/common-任务/连续交付/#步骤4
当我运行以下内容时:
Set-AzureDeployment -Upgrade -SERVICENAME "MYSVC" -Mode Auto -Package D:\MYSVC\Drops\Azure.cspkg -configuration D:\MYSVC\Drops\ServiceConfiguration.Cloud.cscfg -Slot Staging -Force
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Set-AzureDeployment : The path variable 'SERVICENAME' in the
UriTemplate must be bound to a non-empty string value.
Parameter name:
parameters At line:1 char:20
+ Set-AzureDeployment <<<< -Upgrade -SERVICENAME "MYSVC" -Mode Auto -Package D:\MYSVC\Drops\Azure.cspkg -Configuration D:\MYSVC\Drops\ServiceConfiguration.Cloud.cscfg -Slot Staging -Force
+ CategoryInfo : CloseError: (:) [Set-AzureDeployment], ArgumentException
+ FullyQualifiedErrorId : Microsoft.WindowsAzure.Management.ServiceManagement.HostedServices.SetAzureDeploymentCommand
Run Code Online (Sandbox Code Playgroud)
我已经检查了所有的parementers,据我所知,它们都是正确的(我打电话时我正在使用的服务名称Get-AzureDeployment -ServiceName MYSVC).我究竟做错了什么?
有没有办法transaction_id从某个地方映射sys.dm_tran_active_transactions到SPIDSQL Server 2005 中的某个地方?
我在dtsx包中有一个数据流,它处理我需要处理的所有数据.最后,我需要执行一些清理任务.例如,假设以下结构:

如果所有3个案例的记录都为真,那么我想运行所有三个OLE DB命令.如果记录仅对案例1为真,那么它应该只运行案例1.
我可以使用多播和3个单独的条件分割(如下所示),但我希望有一个更清洁的方式.有任何想法吗?

sql-server ×4
c# ×2
sql ×2
asp.net-mvc ×1
azure ×1
breadcrumbs ×1
dacpac ×1
deployment ×1
encryption ×1
estimation ×1
join ×1
performance ×1
powershell ×1
scrum ×1
sqlproj ×1
ssis ×1
t-sql ×1
tfs ×1