我一直最讨厌 MS SQL Server 中的一件事就是安全性的工作方式。如果你有趣地看待服务器,安全上下文会不断切换,而且通常很难(无论如何对我来说)预测或调试。
在今天处理一个问题时,我想,“我希望我可以在代码中添加一行,以显示 SQL Server 在代码运行时使用的安全上下文。” 存在这样的命令吗?例如,SELECT security_context()
更清楚一点...如果我处于存储过程中并且因此受到 SP 所有者的安全上下文的约束,那么我希望看到这一点。如果我在由 sp_executesql 调用的代码中,并且它导致安全性处于 SQL Server 服务帐户的上下文中,那么我希望看到这一点。
至少这样我也许能够弄清楚为什么 SQL Server 认为我不应该访问某些内容。
谢谢!
例子
-- Set up
CREATE USER Test_User WITHOUT LOGIN
CREATE TABLE Test_Security_Context (my_id INT)
INSERT INTO Test_Security_Context VALUES (1)
DENY SELECT ON Test_Security_Context TO Test_User
GO
CREATE PROCEDURE Test_Security_Context_SP
AS
SELECT SUSER_SNAME()
SELECT * FROM Test_Security_Context -- This will return ok
EXEC('SELECT SUSER_SNAME(); SELECT * FROM Test_Security_Context') -- SUSER_SNAME() will match above but select fails …Run Code Online (Sandbox Code Playgroud) SELECT @s = ISNULL(@s +'.','')+ [评论]来自[客户]
RETURN @s
Run Code Online (Sandbox Code Playgroud)
我怎样才能捕获Null或'',这样如果它不会附加到字符串而不添加'.'
谢谢
雅各
我正在寻找任何关于许可问题的建议/直觉/线索/答案,自从我切换到新的Macbook专业版以来一直困扰着我.这就是困境.某些程序在安装期间复制/ usr/local/lib下的库,并且在运行这些程序时,我发现崩溃,我认为这与该文件夹中的文件的权限限制有关.我有错误(无法访问此路径中的文件)尝试安装大胆的插件,然后尝试在此文件夹下执行"ls".我立即获得权限被拒绝,除非我在cmd前面加上sudo.我尝试使用我的用户帐户拥有/ usr/local/lib/audacity文件夹,甚至我仍然在这些文件上获得权限错误.重要的是要注意,问题不是Audacity独有的.一世' 已经看到了Polycom视频会议软件的同样问题,我也无法在这台机器上运行Parallels.(我没有跟踪Parallels的相同问题,但我认为它是相关的.)我模糊地回忆起我过去常用的一些奇怪的Linux cmd魔法,它不仅会授予用户权限,还会调整一些低级别比特允许/禁用某些事情,比如执行,我似乎记得许可事情比执行更深入,但已经过了多年.我不记得detils,我想知道OS X上是否有类似的东西,我可能会忽略它.那个位置和那里的文件有什么特别之处吗?我可以以某种方式改变我的文件系统,使文件看起来不同吗?物有所值,如果我以root身份登录,我似乎能够使用至少一个程序.我没有尝试过其他程序,因为我刚刚发现了这个能力.请帮忙.
我有以下代码,用一条(非常)小箭头绘制一条线...
private void Form1_Paint(object sender, PaintEventArgs e)
{
Pen p = new Pen(Color.Black);
p.EndCap = System.Drawing.Drawing2D.LineCap.ArrowAnchor;
e.Graphics.DrawLine(p, 10, 10, 100, 100);
p.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
我想画一个大箭头(圆形,正方形,三角形等......),保持相同的线宽.
可能吗?
我有一个每周脚本,它从我们的实时数据库移动数据并将其放入我们的存档数据库,然后删除它刚刚从实时数据库存档的数据.因为它是一个不错的大小删除(大约10%的表被修剪),我想我应该在此删除后运行OPTIMIZE TABLE.
但是,我从mysql文档中读到这个,我不知道如何解释它:http: //dev.mysql.com/doc/refman/5.1/en/optimize-table.html
"如果删除了表的大部分,或者对具有可变长度行的表(具有VARCHAR,VARBINARY,BLOB或TEXT列的表)进行了许多更改,则应使用OPTIMIZE TABLE.保留已删除的行在链表中,后续INSERT操作重用旧行位置.您可以使用OPTIMIZE TABLE回收未使用的空间并对数据文件进行碎片整理.
第一句对我来说是模棱两可的.这是否意味着您应该在以下情况下运行它:A)您已删除了具有可变长度行的表的大部分,或者如果您对具有可变长度行的表进行了许多更改,或者B)您删除了大部分任何表或者如果您对具有可变长度行的表进行了许多更改
那有意义吗?所以如果我的表没有VAR列,我还需要运行吗?
虽然我们正在研究这个主题 - 是否有任何指示器告诉我OPTIMIZE呼叫表已经成熟?
此外,我读到这篇http://www.xaprb.com/blog/2010/02/07/how-often-should-you-use-optimize-table/,其中说只运行OPTIMIZE表对主键很有用.如果我的大部分选择来自其他指数,我是否只是在拥有代理键的表上浪费精力?
非常感谢!
我有一个ContextMenu样式和一个MenuItem样式,它们都在顶层菜单上正常工作.问题是如果我在菜单项中添加子菜单,则子菜单没有正确设置样式.看起来你现在只能设置菜单项的样式,而不是实际的子菜单,所以你不能替换IsMouseOver样式(它只是默认为在Windows上启用的任何主题).
我搜索和搜索过,我能找到的最接近的是MSDN上的论坛帖子http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/69269d23-f97c-42e3-a9dd-0e7c0ba49bdd ?prof = required但它实际上也没有正确回答问题,因为他的例子我遇到了同样的问题.任何帮助,将不胜感激!提前致谢.
编辑:周杰伦,这就是我在做的事情.这是一些代码,在UserControl.Resources中作为我的对象的顶部.
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Background" Value="#0f3c5a"></Setter>
<Setter Property="Foreground" Value="White"></Setter>
<Style.Triggers>
<Trigger Property="IsHighlighted" Value="True">
<Setter Property="Background" Value="Black"></Setter>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="LightGray"></Setter>
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type ContextMenu}">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="SnapsToDevicePixels" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ContextMenu}">
<!--Here is where you change the border thickness to zero on the menu-->
<Border BorderThickness="0" x:Name="Border" >
<StackPanel ClipToBounds="True" Orientation="Vertical"
IsItemsHost="True"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Border" Property="Background" Value="#5082a4" /> …Run Code Online (Sandbox Code Playgroud) try {
}
catch (Exception) {
}
Run Code Online (Sandbox Code Playgroud)
我能写吗?
try {
}
catch {
}
Run Code Online (Sandbox Code Playgroud)
这在C#.NET 3.5中是否正常.代码看起来更好,但我不知道是否相同.
我不小心删除了一些我宁愿保留的工作版本.我从备份恢复了磁盘上的构建,但是当我处于该作业的状态页面时,它们仍然不会显示.
我已经尝试过触发另一个构建工作并重新启动Hudson.
如何完全恢复这些构建?是否存在Hudson用于存储此类信息的数据库?