我有以下代码使用存储过程拉回DataTable并输入字符串参数@JobNumbers,这是动态创建的作业编号字符串(因此长度未知):
using (SqlConnection connection = new SqlConnection(con))
        {
            SqlCommand cmd = new SqlCommand("dbo.Mystoredprocedure", connection);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@JobNumbers", SqlDbType.VarChar, 4000);
            cmd.Parameters["@JobNumbers"].Value = JobNumber;
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            connection.Open();
            da.Fill(JobDetails);
        }
正如您所看到的,我当前将JobNumber参数设置为4000的长度,这应该足以承担大约500个作业号并且应该足够了.但是,有可能在奇怪的场合需要更多.所以,我想知道,有没有办法将参数设置为nvarchar(max)的等效sql参数类型?
我已经看过各种类似的问题(将参数传递给SQLCommand的最佳方法是什么?)但没有具体说明你是否可以(或不能)这样做.其次,如果我将存储过程中的@JobNumber参数设置为nvarchar(max),甚至需要这样做,因此我可能根本不需要在C#中设置长度?如果我这样做,这将有潜在的性能问题,如此问题中所建议的在添加SqlCommand参数时何时应该使用"SqlDbType"和"size"??
我有一个具有一系列属性的对象.当我得到特定实体时,我可以看到我正在寻找的字段(opportunityid),并且它的Value属性就是Guid这个机会.这是我想要的值,但它并不总是一个机会,因此我不能总是看opportunityid,所以我需要根据用户提供的输入获取字段.
到目前为止我的代码是:
Guid attrGuid = new Guid();
BusinessEntityCollection members = CrmWebService.RetrieveMultiple(query);
if (members.BusinessEntities.Length > 0)
{
    try
    {
        dynamic attr = members.BusinessEntities[0];
        //Get collection of opportunity properties
        System.Reflection.PropertyInfo[] Props = attr.GetType().GetProperties();
        System.Reflection.PropertyInfo info = Props.FirstOrDefault(x => x.Name == GuidAttributeName);
        attrGuid = info.PropertyType.GUID; //doesn't work.
    }
    catch (Exception ex)
    {
        throw new Exception("An error occurred when retrieving the value for " + attributeName + ". Error: " + ex.Message);
    }
}
动态attr …
为了澄清我的问题,我一直在开发一个应用程序,它根据用户的输入(使用excel电子表格)执行大量数据库更新/ Web服务调用.如果有很多更新,则该过程可能需要超过20分钟才能运行.
为了阻止我的用户界面冻结/超时,我一直在研究多线程,这样我就可以以异步方式运行我的长时间运行过程,同时只需在进程运行时显示动画gif.
这一切似乎与我的测试数据一起很好地运行,但是当我在实际的长时间运行过程中替换时,我得到关于HttpContext.Current.User.Identity.Name的错误.我对这个念起来从这个第一条我把它意味着,如果你在页面指令设置的"异步"属性设置为"真"和所使用的方法RegisterAsyncTask你可以再访问HttpContext.Current.然而,对我来说,这似乎并非如此.我敢肯定,这件事情我做的,所以这里是我的代码(我主要是使用下面的文章来写这个了第二条和第三条):
ASP.NET页面
<%@ Page Title="Home Page" Async="true" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="false" CodeBehind="Index.aspx.cs" Inherits="MyApp.Index" %>
C# - RegisterAsyncTask是在单击按钮时完成的,它启动长时间运行的进程:
protected void ProcessUpdates()
{
    //Register async task to allow the processing of valid updates to occurr in the background
    PageAsyncTask task = new PageAsyncTask(OnBegin, OnEnd, OnTimeOut, null);
    RegisterAsyncTask(task);
}
IAsyncResult OnBegin(Object sender, EventArgs e, AsyncCallback cb, object state)
{
    return Worker.BeginWork(cb, state);
}
private void OnEnd(IAsyncResult asyncResult)
{
    //UpdateResults list should now have been filled …我有一个搜索功能,看起来像这样的新闻文章(包含超过5个搜索项目):
SELECT TOP 5 *
FROM NewsArticles
WHERE (headline LIKE '% sustainable %'OR
headline LIKE '% sustainability %' OR
headline LIKE '% conservation %' OR
headline LIKE '% environmental % OR
headline LIKE '% environmentally %') 
OR
(body LIKE '% sustainable %'OR
body LIKE '% sustainability %' OR
body LIKE '% conservation %' OR
body LIKE '% environmental % OR
body LIKE '% environmentally %')
ORDER BY publishDate DESC 
此查询旨在提取与可持续发展相关的前5个新闻报道,并位于我的主要可持续发展主页上.但是,运行需要一段时间,页面加载速度很慢.所以我正在寻找加快速度的方法.有这么多LIKE条款似乎很麻烦,所以我尝试了像这样的JOIN:
CREATE TABLE #SearchItem (Search varchar(255))
INSERT INTO #SearchItem VALUES
('sustainable'), …BlobServiceClient 是否应该以类似于 HttpClient 的模式创建,有效地作为单例,还是应该根据请求完成?
我的直觉表明它应该是一个单身人士,但我找不到任何明确的建议。我目前有一些这样的代码:
public class MyAzureThing
{
    private readonly BlobServiceClient blobServiceClient;
    public MyAzureThing(Uri baseUri)
    {
        blobServiceClient = new BlobServiceClient(baseUri, new DefaultAzureCredential());
    }
    public async Task CreateContainerAsync(string name)
    {
        var containerClient = blobServiceClient.GetBlobContainerClient(name);
        
        // other logic....
    }
}
我的假设是这是首选的做法,其中 BlobServiceClient 是在此范围内创建的,而我的容器客户端是在我需要时创建的。谁能指出这是否是最佳实践,或者可能是某种反模式?
当我在新机器上重建它时,我的c#安装程序项目提出了很多警告。警告是类似的,他们正在寻找仅存在10.0.0.0版本的dll 11.0.0.0版本。我发现这是由于安装的SQL Server版本(SQL Server 2008 R2)引起的。大多数dll都是由于共享管理对象软件包的版本不是11.0.0.0而引起的。
因此,我安装了共享管理对象所需的SqlSysClrTypes.msi(x86)。然后,我安装了ShareManagementObjects.msi(x86)。我从这里得到的。
一些错误已经消失,但是现在我得到了2个,它们似乎引用了应该从SharedManagementObjects.msi安装的同一dll。它必须可以获取/安装了某些东西,因为我当前的版本为10.0.0.0。
错误是:
找不到程序集'Microsoft.SqlServer.Smo.dll'的依赖项'MICROSOFT.SQLSERVER.MANAGEMENT.SQLPARSER'(签名='89845DCD8080CC91'版本= '11 .0.0.0')
和:
找不到程序集'Microsoft.SqlServer.Management.SmoMetadataProvider.dll'的依赖项'MICROSOFT.SQLSERVER.MANAGEMENT.SQLPARSER'(签名='89845DCD8080CC91'Version = '11 .0.0.0')
我读过的所有内容都建议将Microsoft.sqlserver.management.sqlparser安装为SharedManagementObjects.msi的一部分。我可以做些什么来获取此dll吗?还有其他我需要安装的东西,例如Native Client?
我在google上搜索得相当不错,没有任何内容可以回答我的问题.由于我对Web服务知之甚少(仅开始使用它们,而不是在过去几个月内构建它们),我想知道我是否可以按照我的意愿(在合理范围内)频繁地调用特定的Web服务,或者应该我建立了一次性的请求.
举个例子,我的应用程序旨在进行作业更新,对于某些类型的更新,它将调用Web服务.似乎我的选择是我可以在我的更新应用程序中创建一个数据表,需要Web服务并将整个数据表传递给Web服务,然后在Web服务中编写一个方法来处理数据表的更新.或者,我可以遍历整个更新表(包括除需要Web服务的更新之外的其他更新),并在更新需要时调用Web服务.
目前看来,将每个更新而不是数据表传递给Web服务似乎更简单.
就传递给Web服务的数据而言,每次更新都包含少量数据(3个字符串,最多120个字符).就更新次数而言,可能不会超过200次.
我正在尝试在表格中选择前五个最常见的值及其计数,并将它们返回到词典中.我能够在sql中获取值:
SELECT top 5 
    SR_Status,
    COUNT(SR_Status) AS 'value_count'
FROM     
    ServiceRequests
GROUP BY 
    SR_Status
ORDER BY 
    'value_count' DESC;
如何转换为linq并分配给Dictionary
不确定SO是否在正确的地方或这个问题,但是找不到适合的其他堆栈交换站点。因此,在VSTS中,当创建拉取请求时,如何更改默认团队/审阅者?
更新 这似乎是由顶部选择的项目/团队(而不是仓库)设置的。因此,如果您在顶部选择teamA,但有一个与该团队无关的存储库,则PR会将审阅者默认为teamA,这是不理想的。
我已经创建了一个 SQL Server 数据库项目并导入了我的数据库。我有一些静态数据表,我想在每次重新部署时重新创建它们,因此它们会作为部署后脚本的一部分重新创建。
为了确保删除并重新创建它们,我已将这些静态数据表更改为具有“无”构建操作,因此它们作为构建的一部分被删除,并且仅作为部署后步骤的一部分重新创建。
我的问题是我有一个引用这些表的视图。显然,这显示了语法错误,因为表不再是构建的一部分,因为它们的构建操作是“无”。我的解决方法是尝试将视图创建为部署后脚本的一部分。我使用以下代码执行此操作:
:r .\PostDeploymentScripts\Views\myView.sql
实际的脚本如下所示:
CREATE VIEW [CompTotalByType] AS
SELECT
    c.Id,
    t.id AS TypeId,  
    SUM(c.total) AS CompTotal,
FROM CompNumber c
    INNER JOIN Type t 
    ON t.ProdId =  c.ProdId
GROUP BY
    c.Id,
    t.id
但是,现在我在“CREATE VIEW”下收到语法错误,如下所示:
严重性代码 说明 项目文件行抑制状态错误 SQL72007:语法检查失败“CREATE 附近的语法不正确”。在附近的批处理中:'CREATE VIEW [CompTotalByType] AS' ....路径名称......
但是,当我将此代码放入 SSMS 时,它没有语法错误。这是什么原因造成的?
我有一个奇怪的情况,我的数据库中出现了一个神秘表.数据库是在2018年创建的,但该表看起来像是在2015年创建的!怎么会发生这种情况或者某些东西搞砸了?
我对jQuery/javascript相对较新,但是我遇到了一个简单的解决问题,我只是看不出有什么问题.对不起,如果这最终变得简单,但我搜索了负载,但没有尽头.
我试图让各种div进入淡出或淡出,这取决于它们是否"可见".当点击"下一个"箭头时,div实际上是我想要前进的"页面".
这是我的jQuery:
$(document).ready(function(){    
   $("#page1 > div").hide();
   $("#page2 > div").hide();
   $("#page3 > div").hide();
   $("#page1 > div").fadeIn(800);
   $("#NextArrow").click(function(){
      if($("#page1").is(":visible")){
         $("#page1 > div").fadeOut(800);
         $("#page2 > div").fadeIn(800);
      }
      else if($("#page2").is(":visible")){
         $("#page2 > div").fadeOut(800);
         $("#page3 > div").fadeIn(800);
      }
      else {
         alert("no page");
      }
   })
}) 
这是html:
<table id="MainTable" width="765" border="0" align="center">
    <tr>
        <td align="left" valign="top" style="min-height:400px; padding-left:10px; padding-top:10px">
            <div id="page1" style="position:absolute">
                <div id="p1Title">Introduction</div>
                <p></p>
                <div id="p1Detail">....detail.....</div>
            </div>
            <div id="page2" style="position:absolute">
                <div id="p2Title">Introduction - continued</div>
                <p></p>
                <div id="p2Detail">....detail.....</div>
            </div>
            <div id="page3" style="position:absolute">
                <div id="p3Title">Members</div>
                <p></p> …c# ×7
sql ×2
sql-server ×2
t-sql ×2
asp.net ×1
azure ×1
azure-devops ×1
dll ×1
httpcontext ×1
javascript ×1
jquery ×1
linq ×1
nvarchar ×1
propertyinfo ×1
sql-parser ×1
sqlparameter ×1
web-services ×1