我需要在SQL Server 2012过程中执行以下伪逻辑,基于表变量和声明为这样的表:
DECLARE @tmp TABLE
(
ID int IDENTITY(1,1),
UserID int NOT NULL,
SgsID int NOT NULL
)
CREATE TABLE #Table1
(
ID int IDENTITY(1,1),
UserID int NOT NULL,
SgsID int NOT NULL
)
Run Code Online (Sandbox Code Playgroud)
@tmpTable1,其中UserID/SgsID组合匹配UserID/SgsID的Table1UserID/SgsID从@tmp已删除的组合中删除这些组合Table1我一直在研究不同的方法,比如使用OUTPUT INTO和INTERSECT,但是不能编写一个删除两个表的查询(实际上我认为它甚至不可能).
我已经通过使用以下代码实现了上述步骤,但是,我想知道是否有任何T-SQL专业人员可以建议更简洁/有效的方法?
CREATE TABLE #Table1
(
ID int IDENTITY(1,1),
UserID int NOT NULL,
SgsID int NOT NULL
)
INSERT INTO #Table1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用JQuery来实现以下逻辑:
[url="http://www.google.com"]Google[/url]与<a href="http://www.google.com">Google</a>请参阅下面的HTML页面.问题是,按下按钮时,只会粘贴原始文本,并且不会进行RegEx替换.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Test</title>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
//<\[\/url\]', '<a href="$1">$2</a>');
$('#mydiv').html(newtext);
}
//]]>
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="oldtext">
Try this funky new search engine:
[url="http://www.google.com"]Google[/url]
Or this older one from back in the day:
[url="http://uk.altavista.com"]AltaVista[/url]
</div>
<div>
<input type="button" id="btn" value="Replace" onclick="processJs(); return false;" />
</div>
<div id="mydiv" style="background-color: #eeeeee; border: 2px inset #aaaaaa"> …Run Code Online (Sandbox Code Playgroud) 几天来我一直在苦苦挣扎,如果我过度混淆了事情,那么道歉......
我有一系列表定义:
数据库的结构如下所示:

我需要创建一个显示以下数据的结果集:
对于所有工作角色,显示这些工作角色中的所有技能.但是,还包括各个组中未包含在每个角色中的技能(用NULL或任何其他方法表示).
请参阅此工作代码以创建表和数据. SQL Fiddle
Apologies的长度,我做了很多插入来创建一个现实的例子.
请注意,该PowerPoint技能未添加到HR Manager角色中,但会添加来自同一组的其他技能.另请注意,该Recruitment Policy技能未添加到Software Manager角色中,但我不需要看到此差距,因为该角色中不存在该组中的其他技能.
我想要的结果将类似于此(为简洁起见,不包括超级明星角色):
RoleTitle GroupTitle SkillTitle SkillIsInRole
----------------------- -------------------------- --------------------------------------
Software Manager Microsoft Office Excel 1
Software Manager Microsoft Office Word 1
Software Manager Microsoft Office PowerPoint 1
Software Manager Microsoft SQL Server Query Design 1
Software Manager Microsoft SQL Server Stored Procedures 1
Software Manager Microsoft SQL Server Failover Clustering 1
HR Manager …Run Code Online (Sandbox Code Playgroud) 我使用以下代码在SQL2012中创建了一个对称密钥(以Windows Admin用户身份登录):
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '34trg45trgf546t';
CREATE CERTIFICATE SSCert01 WITH SUBJECT = 'SS Certificate 01';
CREATE SYMMETRIC KEY SSN_Key_01 WITH ALGORITHM = TRIPLE_DES ENCRYPTION BY CERTIFICATE SSCert01;
Run Code Online (Sandbox Code Playgroud)
完成后,我将加密应用于某些数据库列.仍以管理员身份登录,我可以使用密钥成功解密列:
OPEN SYMMETRIC KEY SSN_Key_01 DECRYPTION BY CERTIFICATE SSCert01;
SELECT
name,
surname,
CONVERT(nvarchar(50),DECRYPTBYKEY(PasswordEnc)) as DecryptedPassword
FROM
[tbl_Users];
CLOSE SYMMETRIC KEY SSN_Key_01;
Run Code Online (Sandbox Code Playgroud)
然后我将上面的代码放入存储过程中.问题是我的应用程序使用两个角色访问SQL,访问相应的proc.当这两个角色中的任何一个尝试执行包含上述代码的proc时,我看到此错误:
找不到证书'SSCert01',因为它不存在或您没有权限.密钥"SSN_Key_01"未打开.请在使用前打开钥匙.
当我以任一角色登录时,他们无法看到密钥或证书.因此,任何人都可以建议授予角色的WHICH权限,以便他们可以在存储过程(仅)中使用密钥/证书来加密/解密数据.除了加密/解密之外,不应允许角色使用密钥/证书执行任何功能.我看过MSDN /谷歌并没有更聪明.
更新
以下代码允许角色使用proc,但我担心CONTROL访问太多.有人可以提供一些清晰度吗?
GRANT CONTROL ON CERTIFICATE :: SSCert01 TO Role001;
GRANT CONTROL ON SYMMETRIC KEY :: SSN_Key_01 TO Role001;
Run Code Online (Sandbox Code Playgroud) 我一直在网上和Excel帮助中搜索,但无法找到这是否可行.
给定一个数字,值和搜索项列表,我需要找到值大于或等于搜索项的值.看例子:

Excel返回红色但它应返回橙色,因为15大于10.
其他所需的结果示例如下:
我意识到如果我按降序对列表进行排序并-1用于MATCH [match_type]参数,那么它的工作正常,但是,列表超过1,000行,并且更容易按升序读取.
有很多样本在线使用OWIN/Katana根据用户名/密码组合在数据库中查找用户并生成索赔主体,例如...
var userManager = context.OwinContext.GetUserManager<ApplicationUserManager>();
ApplicationUser user = await userManager.FindAsync(context.UserName, context.Password);
// generate claims here...
Run Code Online (Sandbox Code Playgroud)
如果您正在创建一个新的应用程序并希望实体框架执行脏工作,那就没问题.但是,我有一个八年历史的单片网站刚刚更新,使用基于声明的身份验证.我们的数据库命中是通过DAL/SQL手动完成的,然后从那里生成ClaimsIdentity.
有些人建议OWIN比我们的手动方法更容易使用,但我想从那些使用它的人那里得到一些输入.
是否可以根据凭据更改UserManager工厂查找用户的方式?或者,我错过了另一种方法吗?我在网上找到的所有样本似乎都使用样板方法让Entity Framework创建数据库并管理搜索.
在Brock Allen的博客中,他表示
CookieAuthenticationOptions类具有Provider属性...并且它具有您可以订阅的委托的属性.这允许您在进入应用程序时验证cookie(OnValidateIdentity).在此回调中,您可以拒绝或替换身份.
我是OWIN和C#的新手,所以我正在努力调整OnValidateIdentity我在网上发现的许多例子以满足我的需求.在每个"私人"网页上接受cookie有效后,我想检查以下内容:
我可以用普通方法实现这两个检查,但我无法弄清楚如何挂钩登录OnValidateIdentity.这是我到目前为止所拥有的:
我写了一些代码,但无法弄清楚需要从使用的方法返回什么.
public void Configuration(IAppBuilder app)
{
dynamic cookieExpirationPeriod = TimeSpan.FromMinutes(60);
CookieAuthenticationProvider prov = new CookieAuthenticationProvider();
prov.OnValidateIdentity = ctx =>
{
MyClaimsIdentityObject si = MyApp.Identity.Current();
if (si == null || si.UserId == 0 || si.CustomerId == 0) {
ctx.RejectIdentity();
// what needs to happen here for a return value?
}
};
CookieAuthenticationOptions coa = new CookieAuthenticationOptions {
AuthenticationMode = AuthenticationMode.Active,
CookieName = "MyApp",
ExpireTimeSpan = cookieExpirationPeriod,
SlidingExpiration = …Run Code Online (Sandbox Code Playgroud) 这一定是以前被问过的,但是在阅读了这里、这里、这里和这里之后,我无法推断相关部分以使其工作。我正在将一个旧的 Web 表单网站改造成 MVC,并希望捕获特定的传入 HTTP 请求,以便我可以发出RedirectPermanent(以保护我们的 Google 排名并避免用户因 404 问题而离开)。
我不需要拦截所有传入请求或解析某些id值,而是需要拦截以.aspx文件扩展名结尾(或包含)的所有请求,例如
www.sample.com/default.aspx
www.sample.com/somedir/file.aspx
www.sample.com/somedir/file.aspx?foo=bar
Run Code Online (Sandbox Code Playgroud)
对 MVC 路由的请求应被忽略(只是正常处理)。
这是我到目前为止所拥有的,除了ASPXFiles路线从未被击中。
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// never generates a match
routes.MapRoute(
name: "ASPXFiles",
url: "*.aspx",
defaults: new { controller = "ASPXFiles", action = "Index" }
);
// Used to process all other requests (works fine)
routes.MapRoute( …Run Code Online (Sandbox Code Playgroud) 我有一个 .NET Core MVC 应用程序 (C#),它使用 C++ 库 (SWIG)。在 C# 中,我需要创建其中一个类的实例,预设其回调并在服务器运行时保持其活动状态。使用此回调我从 C++ 获取数据。我尝试将对象存储在会话中,但我只能在那里存储值:
HttpContext.Session.Set(key, value);
Run Code Online (Sandbox Code Playgroud)
还尝试在 上定义它Startup,但该对象在初始化后被释放。在这种情况下最好的解决方案是什么?
注意:在回调函数中,我使用 SignalR 发布数据。
我有一个包含基于日期的用户操作的表。该表用作事件的时间表。以下示例显示了两个人如何随着时间的推移改变其工作角色:
DECLARE @tbl TABLE (
UserID int,
ActionID int,
ActionDesc nvarchar(50),
ActionDate datetime
);
INSERT INTO @tbl (UserID, ActionID, ActionDesc, ActionDate)
VALUES
-- First person
(1, 200, 'Promoted', '2000-01-01'),
(1, 200, 'Promoted', '2001-01-01'),
(1, 200, 'Promoted', '2002-02-01'),
(1, 300, 'Moved', '2004-03-01'),
(1, 200, 'Promoted', '2005-03-01'),
(1, 200, 'Promoted', '2006-03-01'),
-- Second person
(2, 200, 'Promoted', '2006-01-01'),
(2, 300, 'Moved', '2007-01-01'),
(2, 200, 'Promoted', '2008-01-01');
SELECT * FROM @tbl ORDER BY UserID, ActionDate DESC;
Run Code Online (Sandbox Code Playgroud)
这给出了以下内容,首先显示为最近的事件:
我需要以相反的日期顺序显示表格,但根据 [UserID/ActionID] 匹配删除刚刚发生后立即发生的任何事件。例如,如果某人被晋升,然后再次晋升,则第二次晋升将不会包含在结果中,因为它会被视为与前一个操作重复。
因此,期望的输出是:
经过研究,我试图ROW_NUMBER() …
sql-server ×4
t-sql ×4
asp.net ×3
c# ×3
katana ×2
owin ×2
asp.net-mvc ×1
excel ×1
excel-2013 ×1
javascript ×1
jquery ×1
regex ×1
signalr ×1