我们有一个SQL Server 2005数据库,我们想要提高批量删除/插入/选择的性能,我注意到它decimal(18,0)用于主键.我知道这将给我们带来更多的价值,bigint但希望它可能是一个快速的胜利,并且应该通过我的计算能够持续数百万年的增长.
我在.net docs中看到小数点需要16个字节而不是long所需的8个字节,但是在SQL Server中,它看起来像bigint 需要8个字节,但decimal(18,0)只占用5个字节 - 也可以看到select DATALENGTH(max(id)) from table.它是否正确?
有没有其他原因bigint可能会更慢或我应该坚持decimal(18,0)?
我创建了一个名为"MYDOMAIN\Domain Users"的登录和数据库用户.我需要找到登录的域用户具有的角色,但是获取当前用户的所有调用都返回域用户名,例如."MYDOMAIN\username"不是数据库用户名,例如."MYDOMAIN \域用户".
例如,此查询返回"MYDOMAIN\username"
select original_login(),suser_name(), suser_sname(), system_user, session_user, current_user, user_name()
Run Code Online (Sandbox Code Playgroud)
此查询返回0
select USER_ID()
Run Code Online (Sandbox Code Playgroud)
我想用户名查询database_role_members是否有任何函数可以返回它或任何其他方式我可以获得当前用户角色?
我在一个视图中使用一个大型树上的递归cte查询,当使用硬编码但不使用参数查询时,该查询效果很好.是否有可能强制SQL Server使用我想要优化此递归cte查询的计划?任何想法,将不胜感激.
以下是递归CTE的视图 - 它检索给定实体下的所有节点:
CREATE VIEW adams_test_view AS
WITH eq_mi_cte(miId, eqId, miName, miCode) AS
(SELECT ent.id, ent.id, ent.name, ent.code
FROM entity ent
UNION ALL
SELECT e.id, eq_mi_cte.eqid, e.name, e.code
FROM entity e
INNER JOIN eq_mi_cte ON e.pid = eq_mi_cte.miid)
SELECT * FROM eq_mi_cte
Run Code Online (Sandbox Code Playgroud)
带有参数的视图上的查询似乎查询整个视图然后过滤它,因为树太大而从未完成 - 我们得到最大的递归错误:
DECLARE @TopLevelEnt int
SET @TopLevelEnt = 187317;
select * from adams_test_view
WHERE eqId = @TopLevelEnt
Run Code Online (Sandbox Code Playgroud)
这是计划(我对索引名称的应用):
|--Filter(WHERE:([Recr1009]=[@TopLevelEnt]))
|--Index Spool(WITH STACK)
|--Concatenation
|--Compute Scalar(DEFINE:([Expr1012]=(0)))
| |--Index Scan(OBJECT:([local_dbname].[dbo].[Entity].[EntityParentId] AS [ent]))
|--Assert(WHERE:(CASE WHEN [Expr1014]>(100) THEN (0) …Run Code Online (Sandbox Code Playgroud) 我有一个名为的接口Identifiable<TId>,它包含给定类型的单个属性Id.我想创建一个泛型类,将其中一个作为类型参数.它应该是通用的,因为我想返回具体类型,从其中调用其他泛型方法并使用类似的东西typeof(T).
这很好用:
public class ClassName<T, TId> where T : Identifiable<TId>
Run Code Online (Sandbox Code Playgroud)
问题是调用代码必须传递两种类型.例如.new ClassName<Person, int>()
我想知道是否在.net 3.5中有一些方法可以写这个,以便TI可以推断TI?允许来电者做new ClassName<Person>()什么?
在调试我的应用程序时,我会一直看到这样的消息:
xxxxx.exe中出现"xxxx.xxxxx"类型的异常,但未在用户代码中处理.
问题是我有BackgroundWorkers在他们的DoWork中抛出异常,然后通过检查RunWorkerCompleted事件中的RunWorkerCompletedEventArgs.Error来处理这些异常 - 它在运行时运行良好.
有没有办法阻止视觉工作室将这些显示为"未处理"?
这不是将DoWork中的错误返回给UI的正确方法吗?
我尝试使异常扩展ApplicationException并取消在例外对话框中的ApplicationException旁边的框,但它仍然显示.
我有一个在github页面上托管的角度应用程序.当我推出新版本时,部分加载网站的用户可能会遇到问题,直到页面刷新为止.
我想这可能是因为用户浏览器已经下载了视图的更新版本.更新后的视图使用新指令,该指令不在他们在浏览器中加载的模块中.
我可以想到许多黑客可以解决这个问题,但肯定这是一件很常见的事情.有没有一种标准的方法来处理这个或构建应用程序以避免这些问题.
有谁知道 tomcat 可能停止响应的任何原因,或者我可以通过什么方式找出发生这种情况的原因?
Tomcat 在摔倒之前似乎运行了好几个星期,但现在已经发生了几次。
我已经看到这个问题tomcat 6 在几个小时后挂起,这似乎与我遇到的问题相同,但我不知道如何运行 jstack。
这是在 windows server 2008 上,tomcat 2.0.28 运行 jdk 6.0.20。Tomcat 作为服务运行,以名为 tomcat_user 的本地用户身份登录。此用户具有作为服务 priv 的登录名,并且不是任何组的成员。我尝试将用户添加到管理员组,但仍然拒绝访问。
从我试过的命令行 runas /user:servername\tomcat_user
然后当我运行时,jps我得到这个输出:
4476 -- 进程信息不可用
1540 日元
双方jstack 4476并jmap -histo 4476给出了同样的错误:
4476:访问被拒绝
我在表单上有一个带有数字字段的winforms应用程序.这开始为null然后如果我将其设置为数字,更改焦点然后再次清除文本框更改回先前输入的数字.如果我更改数字,例如.从4到5它正确更新但我希望用户能够清除已输入的内容.
以下是一些演示此行为的示例代码:
public partial class Form1 : Form
{
DataTable table = new DataTable("TableName");
public Form1()
{
DataColumn column = new DataColumn("NumericColumnName", typeof(Double));
column.AllowDBNull = true;
table.Columns.Add(column);
object[] rowData = new object[1];
rowData[0] = DBNull.Value;
table.Rows.Add(rowData);
InitializeComponent();
BindingSource bindingSource = new BindingSource();
bindingSource.DataSource = table;
Binding binding = new Binding("Text", bindingSource, "NumericColumnName");
textBox1.DataBindings.Add(binding);
}
}
Run Code Online (Sandbox Code Playgroud)
这是Visual Studio 2008中一个全新的.net 3.5表单项目.我在表单中添加了两个文本框.
我的实际应用程序生成数据集的方式不同,但它具有相同的行为.对数据表的数字列的绑定是否允许空值.
.net ×3
c# ×3
sql-server ×3
.net-3.5 ×2
performance ×2
angularjs ×1
binding ×1
clickonce ×1
generics ×1
github-pages ×1
java ×1
javascript ×1
jstack ×1
msbuild ×1
sql ×1
tomcat ×1
tomcat6 ×1
types ×1
versioning ×1
winforms ×1