Я пытаюсь установить SQL Server 2019 Developer Edition в ОС Windows 10 Enterprise. Однако, как только я запустил файл .exe, он показал ошибку:
- ОС: Windows 10 Корпоративная
- Процессор — Intel(R) Core(TM) i5-8350U с тактовой частотой 1,7 ГГц
- Оперативная память — 32 ГБ
- Жесткий диск — 500 ГБ
- Как только я получил эту ошибку, я удалил SSMS — перезагрузил — снова попытался установить ==== Та же проблема
- Удалил VS 2019 — перезагрузил — снова попытался установить ==== Та же проблема
- Пытался установить SQL Server 2017 Dev Edition, получая сообщение «Запрещено»
- Скачано
en_sql_server_2019_developer_x64_dvd_baea4195.iso
файл с сайта Microsoft и попытался установить.
Я получаю эту ошибку:
НАЗВАНИЕ: Ошибка установки SQL Server.
Программа установки SQL Server обнаружила следующую ошибку:
элемент с таким же ключом уже добавлен.
Для получения справки щелкните: https://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft%20SQL%20Server&EvtSrc=setup. rll&EvtID=50000&EvtType=0x51E5756F%25400x294A9FD9
Пожалуйста, дайте мне знать, если у кого-нибудь есть какие-либо мысли, которые помогут мне настроить выпуск SQL Server 2019 для разработчиков.
Я пытаюсь выполнить следующий запрос для служб отчетов ssrs для портала данных в нашей базе данных Prophet 21 (программное обеспечение ERP от Epicor), и у меня возникают некоторые ошибки при попытке ввести отчет в Visual Basic. Я получаю следующую ошибку:
Конструктор отчетов Microsoft SQL Server
Произошла ошибка при сохранении метода создания запроса. Элемент с таким ключом уже был добавлен.
SELECT
inv_mast.item_desc,
oe_hdr.company_id,
oe_hdr.order_no,
oe_hdr.validation_status,
oe_hdr.order_date,
oe_hdr.requested_date,
oe_hdr.address_id,
oe_hdr.ship2_name,
oe_hdr.ship2_city,
oe_hdr.ship2_state,
oe_hdr_salesrep.salesrep_id,
p21_view_oe_line.line_no,
p21_view_oe_line.required_date
, inv_mast.item_id,
--p21_view_oe_line.qty_ordered,
p21_view_oe_line.unit_quantity,
p21_view_oe_line.unit_size,
p21_view_oe_line.qty_allocated,
p21_view_oe_line.qty_on_pick_tickets,
p21_view_oe_line.qty_invoiced,
p21_view_oe_line.qty_canceled,
p21_view_oe_line.unit_of_measure,
p21_view_oe_line.disposition,
p21_view_oe_line.unit_price,
CASE p21_view_oe_line.po_cost
WHEN 0 THEN
p21_view_oe_line.sales_cost ELSE
p21_view_oe_line.po_cost
END
oe_line_sales_cost,
po_hdr.supplier_id,
po_hdr.order_date,
po_line.date_due,
po_line.qty_ordered,
po_line.qty_received,
po_line.po_no,
po_hdr.po_class1,oe_hdr.customer_id,
customer.customer_name,
supplier.supplier_name,
oe_hdr.taker,
users.name
,contacts.first_name,
contacts.mi,
contacts.last_name,
p21_view_oe_line.pricing_unit,
p21_view_oe_line.pricing_unit_size,
p21_view_oe_line.qty_staged
, oe_hdr.location_id, location.location_name,
oe_hdr.completed,
oe_hdr.po_no,
customer.currency_id,
CASE WHEN customer.currency_id <> company.home_currency_id THEN
p21_view_oe_line.unit_price_home
END
unit_price_home,
CASE WHEN customer.currency_id <> company.home_currency_id THEN
CASE p21_view_oe_line.po_cost_home
WHEN 0 THEN
p21_view_oe_line.sales_cost_home
ELSE
p21_view_oe_line.po_cost_home
END END
oe_line_sales_cost_home,
company.home_currency_id,
CASE WHEN customer.currency_id <> company.home_currency_id THEN
( p21_view_oe_line.qty_ordered - p21_view_oe_line.qty_invoiced - p21_view_oe_line.qty_canceled - p21_view_oe_line.qty_staged ) * ( p21_view_oe_line.unit_price_home / p21_view_oe_line.pricing_unit_size )
END calc_open_price_home,
CASE WHEN customer.currency_id <> company.home_currency_id THEN
'Home : '
END currency_type
, CASE oe_hdr.job_control_flag
WHEN 'Y'
THEN oe_hdr.job_name
ELSE ''
END job_name,
oe_hdr.order_type,
p21_view_oe_line.user_line_no,
p21_view_prod_order_line_link.prod_order_number
--prod_order_hdr_ud.production_status
FROM oe_hdr
LEFT JOIN p21_view_oe_line ON p21_view_oe_line.order_no = oe_hdr.order_no
left join p21_view_prod_order_line_link ON p21_view_oe_line.oe_line_uid = p21_view_prod_order_line_link.transaction_uid
--left join prod_order_hdr_ud with (NOLOCK) ON p21_view_prod_order_line_link.prod_order_number = prod_order_hdr_ud.prod_order_number
left join prod_order_hdr with (NOLOCK) ON p21_view_prod_order_line_link.prod_order_number = prod_order_hdr.prod_order_number
LEFT JOIN company with (NOLOCK) ON company.company_id = oe_hdr.company_id
LEFT JOIN inv_mast with (NOLOCK) ON inv_mast.inv_mast_uid = p21_view_oe_line.inv_mast_uid
LEFT JOIN oe_hdr_salesrep with (NOLOCK) ON oe_hdr_salesrep.order_number = oe_hdr.order_no
LEFT JOIN contacts with (NOLOCK) ON contacts.id = oe_hdr_salesrep.salesrep_id LEFT JOIN customer ON customer.customer_id = oe_hdr.customer_id AND
customer.company_id = oe_hdr.company_id
LEFT JOIN users with (NOLOCK) ON users.id = oe_hdr.taker
LEFT JOIN location with (NOLOCK) ON location.location_id = oe_hdr.location_id
LEFT JOIN oe_line_po with (NOLOCK) LEFT JOIN po_hdr with (NOLOCK) ON po_hdr.po_no = oe_line_po.po_no
LEFT JOIN po_line with (NOLOCK) ON po_line.po_no = oe_line_po.po_no AND
po_line.line_no = oe_line_po.po_line_number
LEFT JOIN supplier with (NOLOCK) ON supplier.supplier_id = po_hdr.supplier_id
ON oe_line_po.order_number = oe_hdr.order_no AND
oe_line_po.line_number = p21_view_oe_line.line_no
AND
oe_line_po.delete_flag = 'N' AND
oe_line_po.cancel_flag = 'N' AND
oe_line_po.completed = 'N' AND
oe_line_po.connection_type = 'P'
WHERE
( oe_hdr_salesrep.primary_salesrep = 'Y' )
AND ( p21_view_oe_line.delete_flag = 'N' )
AND ( p21_view_oe_line.cancel_flag = 'N' )
AND ( p21_view_oe_line.complete = 'N') AND (( oe_hdr.completed <> 'Y') OR ((oe_hdr.completed = 'Y') ))
AND p21_view_oe_line.parent_oe_line_uid = '0'
AND (oe_hdr.rma_flag = 'N' )
AND ( oe_hdr.projected_order = 'N' )
--and (oe_hdr.order_type <> '1706')
--and (location_name = 'TriNova - Florida')
--AND prod_order_hdr.complete <> 'y'
-- and datediff(day , oe_hdr.order_date, getdate()) >= 5
-- AND ((oe_hdr.order_date + 5) < GETDATE())
-- AND (p21_view_audit_trail_oe_hdr_1319.date_created < dateadd(dd,5,p21_view_audit_trail_oe_hdr_1319.date_created))
--AND p21_view_audit_trail_oe_hdr_1319.date_created > GETDATE()
Я получаю эту ошибку всякий раз, когда я отправляю форму, также метод действия не вызывается из-за этого:
Элемент с тем же ключом уже добавлен.
И сведения об исключении:
ViewPage
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/XYZ.Master"
Inherits="System.Web.Mvc.ViewPage" %>
Create
<% using (Html.BeginForm()) {%>
Admin Segment Commissions
<%: Html.TextBoxFor(model => model.FromSegmentNumber) %>
<%: Html.ValidationMessageFor(model => model.FromSegmentNumber) %>
<%} %>
Ответ 1
Скорее всего, у вас есть модель, которая содержит одно и то же свойство дважды. Возможно, вы используете new
, чтобы скрыть базовое свойство.
Решение — переопределить свойство или использовать другое имя.
Если вы поделитесь своей моделью, мы сможем подробнее разобраться.
Ответ 2
У меня была такая же проблема, и я решил это. У меня было двойное свойство с тем же именем в моей модели ViewModel. Одно свойство было в BaseViewModel, а другое — в производной модели.
public class BaseviewModel{
public int UserId { get; set; }
}
public class Model : BaseViewModel
{
public int UserId { get; set; }
}
Я изменил это на
public class BaseviewModel{
public int UserId { get; set; }
}
public class Model : BaseViewModel
{
public int User_Id { get; set; }
}
Теперь он работает нормально.
Ответ 3
У меня была аналогичная проблема, и я обнаружил, что это связано с тем, что у меня было аналогичное публичное свойство (которое должно было быть частным), которое только отличалось в случае.
public string PropertyName {get;set;} // actually set propertyName, get propertyName
public string propertyName {get;set;}
public string PropertyName {get;set;}
private string propertyName {get;set;}
Ответ 4
У меня было 2 свойства модели, подобные этому
public int LinkId {get;set;}
public int LinkID {get;set;}
Странно, что он выбросил эту ошибку для этих двух ха-ха..
Ответ 5
У меня была проблема не в моей модели С#, а в объекте javascript, который я отправлял с помощью AJAX. Я использую Angular для привязки и имел заглавное поле Notes
на странице, а мой объект С# ожидал нижний регистр Notes
. Более описательная ошибка будет приятной.
class Post {
public string notes { get; set; }
}
Ответ 6
Я нашел ответ. Это было из-за переменных. Как int a и string a. были две переменные с тем же именем.
Ответ 7
У меня была одна и та же проблема: я был foreach
, зацикливая на моем объекте и добавляя результат в Dictionary
, и у меня был `Duplicate в ключе из базы данных
foreach (var item in myObject)
{
myDictionary.Add(Convert.ToString(item.x),
item.y);
}
item.x
имеет двойное значение
Ответ 8
Ответ 9
Вот что я сделал, чтобы узнать ключ, который добавляется дважды. Я загрузил исходный код из http://referencesource.microsoft.com/DotNetReferenceSource.zip и настроил VS для отладки исходного кода. Открытый Dictionary.cs в VS запускал проект, после загрузки страницы добавлял отладку в строке ThrowHelper.ThrowArgumentException(ExceptionResource.Argument_AddingDuplicate);
и мог видеть значение «ключ». Я понял, что в JSON одна буква переменной была в верхнем регистре, но в моей модели она была строчной. Я исправил модель и теперь работает тот же код.
Ответ 10
Я попал в это в MVC 5 и Visual Studio Express 2013. У меня было два свойства с IndexAttribute
, как показано ниже. Комментируя один из них и перекомпилировав, выстроили в лесу контроллер MVC 5 с представлениями, используя Entity Framework. Загадочно, когда я раскоментировал атрибут, перекомпилировал и снова попытался, scaffolder работал нормально.
Возможно, базовая модель данных сущностей или «что-то» была кэширована/повреждена, а удаление и повторное добавление IndexAttribute
просто вызвало перестроение этого «чего-то».
[Index(IsUnique = true)]
public string Thing1 { get; set; }
[Index(IsUnique = true)]
public string Thing2 { get; set; }
Ответ 11
В MVC 5 я обнаружил, что временно комментирует ссылки на модель Entity Framework и перекомпилирует сторону проекта, выполнив эту ошибку при создании лесов. Как только я закончу строительные леса, я раскомментирую код.
public Guid CreatedById { get; private set; }
// Commented out so I can scaffold:
// public virtual UserBase CreatedBy { get; private set; }
Ответ 12
Я хотел бы добавить ответ, который я не вижу здесь. Это очень связано с принятым ответом, однако у меня не было дублированных свойств на моей модели, это была проблема с моим Javascript.
Я делал некоторое спасение Ajax, где я перестраивал модель для отправки обратно на сервер. Когда я сначала инициализировал страницу, я установил свою исходную модель в переменную:
var currentModel = result.Data;
My result.Data
имеет свойство: result.Data.Items
Итак, через некоторое время я кое-что делаю и хочу сэкономить через Ajax. Часть процесса состоит в том, чтобы захватить массив из некоторого побочного процесса и установить его в мое свойство currentModel.Items
и отправить currentModel
на сервер.
В моем Javascript, однако, я сделал это, вместо этого:
currentModel.items = getData();
Я не поймал его, но в Visual Studio он автоматически запустит первую букву для свойств Javascript (это тоже может быть ReSharper). Затем я получил точную ошибку, отправленную OP при попытке сохранить, поскольку currentModel теперь имеет currentModel.Items
И currentModel.Items
Простая замена «пунктов» на «Элементы» устраняет проблему.
Ответ 13
У меня была такая же проблема. Он появился для меня после перехода на MVC 5 из MVC 3.
У меня был пользовательский шаблон редактора и ему пришлось использовать его так:
@Html.EditorFor(model => model.MyProperty, "MyCustomTemplateName", "MyPropertyField", this.ViewData)
Чтобы решить проблему, мне пришлось удалить проходящий объект ViewData
. Поэтому в конце я имел:
@Html.EditorFor(model => model.MyProperty, "MyCustomTemplateName", "MyPropertyField")
Надеюсь, что это поможет.
Ответ 14
У меня была такая же ошибка. И после того, как я уже думал, что мой ум сломан, потому что я переименовал почти все свойства моих моделей, решение было удалить одну ссылку на All Syncfusion Controls и добавить ссылки на отдельные элементы управления этого элемента управления. (От Nuget)
Ответ 15
В моем случае корень проблемы был двойным именем свойства в клиенте json, который отличался только чувствительностью к регистру.
Ответ 16
Другой способ встретить эту ошибку — из набора данных с неназванными столбцами. Ошибка генерируется, когда набор данных сериализуется в JSON.
Это утверждение приведет к ошибке:
select @column1, @column2
Добавление имен столбцов предотвратит ошибку:
select @column1 as col1, @column2 as col2
Ответ 17
У меня была такая же ошибка, но б/с по разным причинам. Использование Entity Framework. Еще одна вещь, которую я должен добавить здесь, прежде чем я поделюсь своим кодом и решением, у меня была точка останова на методе контроллера, но он не ломался там, просто выдает исключение 500 внутренняя ошибка сервера.
Я отправлял данные из представления в контроллер через ajax (http post). Модель, которую я ожидал в качестве параметра, была классом. Это было унаследовано с другим классом.
public class PurchaseOrder : CreateUpdateUserInfo
{
public PurchaseOrder()
{
this.Purchase_Order_Items = new List();
}
public int purchase_order_id { get; set; }
public Nullable purchase_quotation_id { get; set; }
public int supplier_id { get; set; }
public decimal flat_discount { get; set; }
public decimal total { get; set; }
public decimal net_payable { get; set; }
public bool is_payment_complete { get; set; }
public decimal sales_tax { get; set; }
public DateTime CreatedOn { get; set; }
public int CreatorUserID { get; set; }
public DateTime UpdatedOn { get; set; }
public int UpdatorUserID { get; set; }
public bool IsDeleted { get; set; }
public List Purchase_Order_Items { get; set; }
}
public class CreateUpdateUserInfo
{
public DateTime CreatedOn { get; set; }
public int CreatorUserID { get; set; }
public string CreatorUserName { get; set; }
public DateTime UpdatedOn { get; set; }
public int UpdatorUserID { get; set; }
public string UpdatorUserName { get; set; }
public bool IsDeleted { get; set; }
}
var model = {
supplier_id : isNaN($scope.supplierID) || 0 ? null : $scope.supplierID,
flat_discount : 0,
total : $scope.total,
net_payable : $scope.total,
is_payment_complete : true,
sales_tax:0,
Purchase_Order_Item: $scope.items
};
var obj = {
method: 'POST',
url: 'Purchase/SaveOrder',
dataType: 'json',
data: JSON.stringify(model),
headers: { "Content-Type": "application/json" }
};
var request = $rootScope.AjaxRequest(obj);
request.then(function (response) {
var isError = response.data.MessageType === 1;
$rootScope.bindToaster(response.data.MessageType,response.data.Message);
//$('html, body').animate({ scrollTop: 0 }, 'slow');
if(!isError){
//$scope.supplierID =undefined;
}
}, function (response) {
$rootScope.bindToaster(2,response.data);
console.log(response);
});
Просто удалили дублированные поля из класса PurchaseOrder, и это сработало как прелесть.
Ответ 18
В моем случае, просто когда вы компилируете код, он работает просто отлично. Но вызов одного из статического поля статического класса, имеющего словарь, как в примере кода, вызывает исключение.
public static AClass
{
public static Dictionary ADict = new Dictionary()
{
{"test","value1"},{"test","value2"},
};
}
Пояснение ADict имеет дважды добавленный ключ «test». Итак, когда вы вызываете статический класс, он выдает исключение.
Ответ 19
У меня была такая же ошибка. Когда я проверил код, я обнаружил, что объявляю запрос «GET» на моей угловой стороне (font-end) и объявляю запрос «POST» на стороне ASP.net(back-end). Установите POST/GET любой в обе стороны. Затем решил ошибку.
Наш пакет служб SSIS завершается ошибкой через 2 секунды со следующей ошибкой:
Элемент с таким же ключом уже добавлен.; в System.ThrowHelper.ThrowArgumentException(ресурс ExceptionResource) в System.Collections.Generic.Dictionary`2.Insert(ключ TKey, значение TValue, логическое добавление) в Microsoft.SqlServer.IntegrationServices.Server.ISServerExec.ProjectOperator.StartPack (.SqlServer.IntegrationServices.Server.ISServerExec.ProjectOperator.PerformOperation() Хранимая процедура Transact-SQL
Мы развертываем наши пакеты служб SSIS (2016) на нашей SSISDB на MSSQL: 13.0.4001.0, у нас также есть переменные среды в той же папке
Странно то, что в этом проекте у меня есть 5 пакетов, которые работают нормально (другая работа), но только 1 не работает (у него есть своя собственная работа)
- Я уже удалил воссозданную папку / переменные окружения /jobs — тот же результат
- Я убедился, что у меня есть разные переменные окружения имя папки
- Мы выполняем работу с разными пользователями, и 2 из них были администраторами в БД
- У нас есть другие серверы, которые имеют ту же конфигурацию и проект (2 среды QA), и они работают так же, но хорошо!
Нужно ли идти прямо в MSDB и удалить строку? Куда?
Ценю любые идеи — спасибо всем
Я нашел ошибку и решение
Кажется, я развернул пакет с двумя SMTP-соединениями с тем же именем (одно как соединение проекта, а другое с тем же именем, что и соединение пакета), я удалил ненужное (в моем случае удалил один пакет) и развернул фиксированный пакет. Теперь задание успешно выполняется, вызывая только одно соединение.
- Мне не хватало правильной обработки ошибок из самой ошибки, поскольку она не направляла меня к конкретному соединению
- Пакет не прошел во время выполнения проверок — поэтому нет журналов ошибок, чтобы помочь
- Я запустил запрос из [SSISDB].[Catalog].[Execute_parameter_values] и сравнил успешный запуск с неудачным, после чего я заметил одноименные соединения
3
ответа
Я нашел ошибку и решение
Кажется, я развернул пакет с двумя SMTP-соединениями с тем же именем (одно как соединение проекта, а другое с тем же именем, что и соединение пакета), я удалил ненужное (в моем случае удалил один пакет) и развернул фиксированный пакет. Теперь задание успешно выполняется, вызывая только одно соединение.
- Мне не хватало правильной обработки ошибок из самой ошибки, поскольку она не направляла меня к конкретному соединению
- Пакет не прошел во время выполнения проверок — поэтому нет журналов ошибок, чтобы помочь
- Я запустил запрос из [SSISDB].[Catalog].[Execute_parameter_values] и сравнил успешный запуск с неудачным, после чего я заметил одноименные соединения
Я столкнулся с той же проблемой, когда скопировал существующий пакет и изменил имена таблиц\имена листов excel. Перестройка решения или повторное открытие визуальной студии решили проблему для меня
25 фев ’21 в 23:30
foreach (Benefit bene in claim.SubClaimFolderCollection[0].BenefitsFolder.BenefitCollection)
{
Dictionary searchBeneficiary =
new Dictionary();
searchBeneficiary.Add("rli_beneficiariesid", ((Guid)claimant.GetValue("rli_subclaimfolderid", true)));
}
Это дает мне эту ошибку
Элемент с таким же ключом уже был добавлен при добавлении элемента в словарь.
4 ответы
Вы уверены, что ошибка исходит именно отсюда? Похоже, что для каждой итерации вы создаете новый словарь, вставляете в него одну запись, а затем отбрасываете словарь. Это не должно приводить к этой ошибке, и также очень маловероятно, что вы намеревались сделать это.
Если вы хотите преобразовать коллекцию в словарь, я бы предложил использовать Enumerable.ToDictionary метод (требуется .NET 3.5).
ответ дан 25 окт ’10, 21:10
Мне кажется, что ключ «rli_beneficiariesid» дважды добавляется в словарь каждый раз во время цикла:
(Код скопирован и вставлен из текущего образца кода в исходном сообщении):
searchBeneficiary.Add(
"rli_beneficiariesid",
searchBeneficiary.Add("rli_beneficiariesid", ((Guid)claimant.GetValue("rli_subclaimfolderid", true)));
Обратите внимание, что searchBeneficiary.Add вызывается с помощью «rli_beneficiariesid». Внутри вызова Add снова вызывается searchBeneficiary.Add с тем же ключом.
В результате, похоже, что в словарь searchBeneficiary добавляется guid (заявитель.GetValue) с ключом rli_beneficiariesid, а затем словарь добавил к себе с таким же ключом!
ответ дан 25 окт ’10, 22:10
ответ дан 25 окт ’10, 21:10
Этот код не может привести к ошибке. 🙂
ответ дан 30 окт ’10, 15:10
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками
c#
dictionary
or задайте свой вопрос.
Это странно, я переместил некоторый код, который был первоначально проверен в некотором автономном программном обеспечении, в основное программное обеспечение.
< Сильный > Код:
Invoke(new MethodInvoker(() =>
{
foreach (HtmlElement inputTag in webBrowser.Document.GetElementsByTagName("input"))
{
Application.DoEvents();
var tagIdentifier = Helpers.ExtractIdentifierForAutoFill(inputTag.OuterHtml, username + "|" + password + "|" + email + "|" + url);
Helpers.ReturnMessage(tagIdentifier.ToString());
Helpers.InputFieldsDebugLogging(inputTag.OuterHtml);
Helpers.ReturnMessage(tagIdentifier.Item1 + " -> " + tagIdentifier.Item2 + " -> " + tagIdentifier.Item3);
if (!string.IsNullOrEmpty(tagIdentifier.Item3))
{
if (tagIdentifier.Item1 == "id")
{
webBrowser.Document.GetElementById(tagIdentifier.Item2).SetAttribute("value", tagIdentifier.Item3);
}
if (tagIdentifier.Item1 == "name")
{
foreach (HtmlElement id in webBrowser.Document.All.GetElementsByName(tagIdentifier.Item2))
{
id.SetAttribute("value", tagIdentifier.Item3);
}
}
}
else
{
var ignore = File.ReadAllLines(@"LogicFiles\form-ai-ignore.txt");
if (!ignore.Any(tagIdentifier.Item2.Contains) && !string.IsNullOrEmpty(tagIdentifier.Item2))
{
var fi = new FormTeachAIFields(this, tagIdentifier.Item2)
{
// ...
};
}
}
}
}));
Ошибка при отладке:
System.ArgumentException: An item with the same key has already been added.
at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
Когда я проверяю, из какой строки исходит ошибка, она говорит, что находится в строке вызова: Invoke(new MethodInvoker(() =>
Кажется, что при отладке больше код не идет дальше этой части:
var tagIdentifier = Helpers.ExtractIdentifierForAutoFill(inputTag.OuterHtml, username + "|" + password + "|" + email + "|" + url);
Я включил ниже используемые методы:
public static Tuple ExtractIdentifierForAutoFill(string input_field, string account)
{
var identifier = "";
var id_or_name = "";
try
{
if (input_field.Contains("id="))
{
Match token_m = Regex.Match(input_field, @"id=""(.*?)""", RegexOptions.IgnoreCase);
if (token_m.Success)
{
identifier = token_m.Groups[1].Value;
id_or_name = "id";
}
}
if (input_field.Contains("name="))
{
Match token_m = Regex.Match(input_field, @"name=""(.*?)""", RegexOptions.IgnoreCase);
if (token_m.Success)
{
identifier = token_m.Groups[1].Value;
id_or_name = "name";
}
}
}
catch (Exception ex)
{
DebugLogging("[" + DateTime.Now + "]-[" + ex.ToString() + "]");
}
var tuple = new Tuple(id_or_name, identifier, GetAccountDetails(account, PredictValue(identifier), identifier));
return tuple;
}
public static string GetAccountDetails(string accountDetailsString, string inputValue, string field)
{
string[] macro = accountDetailsString.Split('|');
var returnValue = "";
//ReturnMessage(inputValue);
switch (inputValue)
{
case "USERNAME":
returnValue = macro[0];
break;
case "PASSWORD":
returnValue = macro[1];
break;
case "EMAIL":
returnValue = macro[2];
break;
case "URL":
returnValue = macro[3];
break;
case Helpers.CustomMacroField:
//TODO: duplicated code
if (!string.IsNullOrWhiteSpace(field))
{
var values = ReadAiFields(@"LogicFiles\form-ai-fields-custom.txt");
var foundKey = values.Keys.FirstOrDefault(key => field.Contains(key));
if (foundKey != null) returnValue = values[foundKey];
}
break;
default:
returnValue = "";
break;
}
return returnValue;
}
public static string PredictValue(string inputValue)
{
string returnValue = "";
inputValue = inputValue.ToLower();
var values = ReadAiFields(@"LogicFiles\form-ai-fields.txt");
var foundKey = values.Keys.FirstOrDefault(key => inputValue.Contains(key));
if (foundKey != null)
{
returnValue = values[foundKey];
}
return returnValue;
}
public static Dictionary ReadAiFields(string path)
{
var values = new Dictionary();
if (!File.Exists(path)) return values;
var lines = File.ReadAllLines(path);
for (var i = 0; i < lines.Length - 1; i++)
{
string line = lines[i];
if (line.StartsWith("#"))
{
string[] keys = line.Remove(0, 1).Split('|');
string value = lines[i + 1];
foreach (string key in keys)
{
values.Add(key, value);
}
}
}
return values;
}
Я никогда не писал вышеупомянутый код, он был недавно изменен, который работал в автономном приложении, но не после того, как я переместил точный код с помощью копирования / вставки, из чтения об ошибке, которую я думаю делать со словарем, это будет правильно? я не совсем уверен в проблеме, есть ли что-то выделяющееся в коде, который я мог пропустить? любая помощь будет оценена.
2 ответа
Сообщение об исключении говорит нам, что мы пытаемся добавить ключ в словарь, который уже содержит этот ключ, что недопустимо. Единственный код, которым вы поделились, который делает это:
foreach (string key in keys)
{
values.Add(key, value);
}
Чтобы избежать проблемы, мы просто сначала проверяем, существует ли ключ. Если это так, у нас есть решение сделать:
- Оставьте существующее значение
- Назначьте новое значение
Чтобы оставить существующие значения, мы можем просто игнорировать ключи, которые уже существуют:
foreach (string key in keys)
{
if(!values.ContainsKey(key))
{
values.Add(key, value);
}
}
Чтобы назначить новое значение, нам не нужно проверять, существует ли ключ, мы просто добавляем его другим способом:
foreach (string key in keys)
{
// This will add a new key/value pair, unless the key already
// exists, in which case it will assign a new value to the key
values[key] = value;
}
24 Июн 2020 в 18:24
Похоже, что ваша проблема здесь.
public static Dictionary ReadAiFields(string path)
{
var values = new Dictionary();
if (!File.Exists(path)) return values;
var lines = File.ReadAllLines(path);
for (var i = 0; i < lines.Length - 1; i++)
{
string line = lines[i];
if (line.StartsWith("#"))
{
string[] keys = line.Remove(0, 1).Split('|');
string value = lines[i + 1];
foreach (string key in keys)
{
values.Add(key, value);
}
}
}
return values;
}
Не зная базовой структуры данных, я бы предположил, что каждая строка содержит данные для разных объектов одного типа. При этом будет работать нормально, если у вас будет только одна строка, но как только вы попытаетесь перейти на следующую строку, вы получите эту ошибку. По сути, я предполагаю, что ваши данные выглядят так, как показано ниже.
#username|password|email|url
user1|1234pass|john@example.com|somethingcool.com
#username|password|email|url
user2|123456pass|jane@example.com|somethingcooler.com
public static List> ReadAiFields(string path)
{
var values = new List>();
if (!File.Exists(path)) return values;
var lines = File.ReadAllLines(path);
for (var i = 0; i < lines.Length - 1; i++)
{
string line = lines[i];
if (line.StartsWith("#"))
{
var dictionary = new Dictionary();
string[] keys = line.Remove(0, 1).Split('|');
string value = lines[i + 1];
foreach (string key in keys)
{
dictionary.Add(key, value);
}
values.Add(dictionary);
}
}
return values;
}
Это, конечно, прервет ваш вызов этому методу. Если вы знаете, что это всегда первый (или, по крайней мере, знаете, что он всегда находится в определенной позиции), вы можете использовать следующее.
var foundKey = values[0].Keys.FirstOrDefault(key => inputValue.Contains(key));
24 Июн 2020 в 18:23
Пытаюсь установить SQL Server 2012 Developer Edition на свой ноутбук.
Я продолжаю получать сообщение об ошибке, что не могу записать файл XML.
Программа установки SQL Server обнаружила следующую ошибку. Произошла ошибка при создании XML-документа. Код ошибки 0X84B10001
Я запускаю setup.exe от имени администратора коробки.
Что я могу сделать, чтобы обойти это, пожалуйста?
2 ответы
Я нашел проблему. У меня не было пароля на моем компьютере. Наконец-то я нашел журнал ошибок сервера sql, и в нем было более подробно о криптографическом исключении, которое что-то делало с реестром. Затем я добавил пароль, и теперь он установлен и работает нормально.
Сумасшедшая ошибка, но я понимаю, почему вам не нужна эта ситуация.
Создан 03 июля ’12, 05:07
Пробовал это и другие исправления. По-видимому, это сообщение об ошибке относится ко многим различным проблемам. Что сработало для меня, так это создать нового пользователя с правами администратора. Войдите как этот пользователь, затем установите.
Создан 28 фев.
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками
sql-server
xml
windows-7
sql-server-2012
or задайте свой вопрос.
Каждый раз, когда я запускаю приложение, я получаю сообщение об ошибке исключения:
Сообщение: элемент с таким же ключом уже был добавлен.
Полное сообщение об ошибке InnerException выглядит следующим образом:
=========================
Exception Information
=========================
Message: The type initializer for 'Devart.DbForge.QueryBuilder.QueryBuilderControl' threw an exception.
Source: Devart.DbForge.QueryBuilder
TargetSite: Void .ctor()
HelpLink:
Type: System.TypeInitializationException
Place: 2
Stack:
at Devart.DbForge.QueryBuilder.QueryBuilderControl..ctor()
at Devart.DbForge.QueryBuilder.QueryBuilderService.CreateQueryBuilder()
at Devart.DbForge.SqlDocument.DyMBowSEe()
at Devart.DbForge.SqlDocument.CreateViewControl(IDocumentView view)
at Devart.DbForge.SqlDocument..ctor(IIocContainer container, String fileName, String initialView, Encoding encoding, IHierarchy hierarchy, INode item)
at Devart.DbForge.SqlServer.SqlServerSqlDocument..ctor(IIocContainer container, String fileName, String initialView, Encoding encoding, IHierarchy hierarchy, INode item)
at Devart.DbForge.SqlServer.SqlDocumentFactory.InternalCreateDocument(String moniker, String& view, Boolean createNew, Encoding encoding, IHierarchy hierarchy, INode item)
at Devart.DbForge.DocumentFactory.CreateDocument(String moniker, String& view, Boolean createNew, Encoding encoding, IHierarchy hierarchy, INode item, IPropertyProvider docData, Boolean isModal)
at Devart.Shell.AbstractDocumentService.CreateDocument(String moniker, String& view, Guid factoryId, Boolean createNew, Encoding encoding, IHierarchy hierarchy, INode item, Boolean isModal)
at Devart.Shell.AbstractDocumentService.CreateDocument(String moniker, String view, Guid factoryId, Boolean createNew, Encoding encoding, IHierarchy hierarchy, INode item)
at Devart.DbForge.DbObjects.DbObjectPopupProvider.pPCTilZstB(ICommand , CommandStatus& , Object )
at Devart.Shell.Common.CommandTargetHelper.InvokeCommand(ICommand command, Object instance)
at Devart.Shell.CommandBarService.InvokeCommand(ICommand command, ICollection objects, ICommandTarget primaryCommandTarget)
at Devart.Shell.CommandBarBase.OnItemClicked(IInternalBarControl control)
at Devart.Shell.MenuBar.OnItemClicked(IInternalBarControl control)
at Devart.Shell.CommandBarButton.Button_Click(Object sender, ItemClickEventArgs e)
at Controls.Bars.BarItem.OnClick(BarItemLink link)
at Controls.Bars.BarBaseButtonItem.OnClick(BarItemLink link)
at Controls.Bars.BarButtonItem.OnClick(BarItemLink link)
at Controls.Bars.BarItemLink.OnLinkClick()
at Controls.Bars.BarButtonItemLink.OnLinkClick()
at Controls.Bars.BarItemLink.OnLinkAction(BarLinkAction action, Object actionArgs)
at Controls.Bars.BarButtonItemLink.OnLinkAction(BarLinkAction action, Object actionArgs)
at Controls.Bars.BarItemLink.OnLinkActionCore(BarLinkAction action, Object actionArgs)
at Controls.Bars.ViewInfo.BarSelectionInfo.ClickLink(BarItemLink link)
at Controls.Bars.ViewInfo.BarSelectionInfo.UnPressLink(BarItemLink link)
at Controls.Bars.Controls.CustomLinksControl.OnMouseUp(MouseEventArgs e)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at Controls.Bars.Controls.CustomControl.WndProc(Message& msg)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Start of InnerException
Message: An item with the same key has already been added.
Source: mscorlib
TargetSite: Void ThrowArgumentException(System.ExceptionResource)
HelpLink:
Type: System.ArgumentException
Stack:
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at System.Collections.ObjectModel.KeyedCollection`2.AddKey(TKey key, TItem item)
at System.Collections.ObjectModel.KeyedCollection`2.InsertItem(Int32 index, TItem item)
at Devart.Diagram.DiagramPalette.GetPen(Color color, Dimension width, PenAlignment alignment)
at Devart.Diagram.DiagramPalette..ctor(ViewService viewService)
at Devart.Diagram.ViewService..ctor(DiagramOptions options)
at Devart.Diagram.Diagram..ctor(String diagramTypeId, IServiceProvider parentProvider)
at Devart.Diagram.Overview.OverviewAddIn..ctor()
at Devart.DbForge.Diagramming.Overview..ctor()
at Devart.DbForge.QueryBuilder.QueryBuilderControl..cctor()
End of InnerException
=========================
Window Layout
=========================
Active document window: 'Merge_SubStage.sql' (Code)
Active window: 'Database Explorer'
Active document 'Merge_SubStage.sql'
Documents:
Name: 'initial-dev.sql', Caption: 'initial-dev.sql', Visible: False, Active view: 'Code', Initial view: 'Code'
Connection name: 'DESKTOP-GV10S60\MSSQLSERVERCARLT', Is open: 'True', Server version: '15.00.2070' string: 'Data Source=DESKTOP-GV10S60\MSSQLSERVERCARLT;Encrypt=False;Integrated Security=False;User ID=lucy'
Name: 'Merge_SubStage.sql', Caption: 'Merge_SubStage.sql', Visible: True, Active view: 'Code', Initial view: 'Code'
Connection name: 'DESKTOP-GV10S60\MSSQLSERVERCARLT', Is open: 'True', Server version: '15.00.2070' string: 'Data Source=DESKTOP-GV10S60\MSSQLSERVERCARLT;Encrypt=False;Integrated Security=False;User ID=lucy'
Toolwindows (visible or have been shown in current session):
Caption: 'Database Explorer', Visible: 'True', DefaultVisibility: 'Always', IsControlCreated: 'True', State: Docked
Caption: 'Find Results', Visible: 'True', DefaultVisibility: 'Always', IsControlCreated: 'True', State: Docked
Caption: 'Error List', Visible: 'True', DefaultVisibility: 'Always', IsControlCreated: 'True', State: Docked
Caption: 'Output', Visible: 'True', DefaultVisibility: 'Always', IsControlCreated: 'True', State: Docked
Caption: 'Start Page', Visible: 'True', DefaultVisibility: 'Always', IsControlCreated: 'True', State: Tabbed
=========================
Connections
=========================
DESKTOP-GV10S60\MSSQLSERVERCARLT (open) - 'Data Source=DESKTOP-GV10S60\MSSQLSERVERCARLT;Encrypt=False;Integrated Security=False;User ID=lucy'. Server version: 15.00.2070
CP-PretBIHydr8Config.cp-retbihydr8config.database.windows.net (current) (open) - 'Data Source=cp-retbihydr8config.database.windows.net;Encrypt=False;Initial Catalog=CP-PretBIHydr8Config;Integrated Security=False;User [email protected];Authentication="Active Directory Password"'. Server version: 12.0.2000.8
CP-pretbireferencedev.cp-retbihydr8config.database.windows.net (open) - 'Data Source=cp-retbihydr8config.database.windows.net;Encrypt=False;Initial Catalog=CP-pretbireferencedev;Integrated Security=False;User [email protected];Authentication="Active Directory Password"'. Server version: 12.0.2000.8
cp-metadata-transform-db-test.cp-retbihydr8config.database.windows.net - 'Data Source=cp-retbihydr8config.database.windows.net;Encrypt=False;Initial Catalog=cp-metadata-transform-db-test;Integrated Security=False;User [email protected];Authentication="Active Directory Password"'
Execution history
Store queries: True
Store period : 60 (days)
Available period : 60 (days)
Folder: %appdata%\Devart\dbForge Studio for SQL Server\ExecutedQueries
Max script size: 1024 (KB)
Initial interval: Week
History folder content:
C:\Users\Carlton\AppData\Roaming\Devart\dbForge Studio for SQL Server\ExecutedQueries\ExecutedQueries.db (8822784)
Ошибка генерируется моим приложением SQL, которое я использую для выполнения SQL-запросов. Есть ли у вас какие-либо мысли о том, как решить эту проблему?
Я получаю следующую ошибку в SSRS
:
Произошла ошибка при сохранении метода разработки запроса.
Товар с таким ключом уже добавлен
Однако что означает «предмет»? Я даже пробовал редактировать RDL
и удаление всех ссылок на хранимую процедуру, которую мне нужно использовать, называется prc_RPT_Select_BI_Completes_Data_View
.
Возможно, это связано с тем, что хранимая процедура использует динамический SQL (т. N'
обозначение)?
В хранимой процедуре у меня есть:
SET @SQL += N'
SELECT bi.SupplierID as ''Supplier ID''
,bi.SupplierName as ''Supplier Name''
,bi.PID as ''PID''
,bi.RespondentID as ''Respondent ID''
,lk_slt.Name as ''Entry Link Type''
,ts.SurveyNumber as ''Initial Survey ID'''
9 ответы
Похоже, у SSRS есть проблема (по крайней мере, в версии 2008) — я изучаю этот веб-сайт, который объясняет это
Где говорится, что если у вас есть два столбца (из 2 таблиц различий) с одинаковым именем, это вызовет эту проблему.
ВЫБЕРИТЕ a.Field1, a.Field2, a.Field3, b.Field1, b.field99 FROM TableA a JOIN TableB b на a.Field1 = b.Field1
SQL отлично справился с этим, так как я добавил к каждому префикс псевдонима (таблицы). Но SSRS использует в качестве ключа только имя столбца, а не таблицу + столбец, поэтому он задыхался.
Исправить было легко: либо переименовать второй столбец в iebField1 AS Field01, либо просто опустить поле целиком, что я и сделал.
ответ дан 15 мая ’14, 21:05
Создан 23 янв.
Я сталкиваюсь с той же проблемой. После отладки я исправил то же самое. если имя столбца в вашем SQL-запросе повторяется несколько раз, возникает эта проблема. Следовательно, используйте псевдоним в SQL-запросе, чтобы отличать имя столбца. Пример: приведенный ниже запрос будет правильно работать в SQL-запросе, но создаст проблему в отчете SSRS:
Select P.ID, P.FirstName, P.LastName, D.ID, D.City, D.Area, D.Address
From PersonalDetails P
Left Join CommunicationDetails D On P.ID = D.PersonalDetailsID
Причина: ID упомянул дважды (несколько раз)
Select P.ID As PersonalDetailsID, P.FirstName, P.LastName, D.ID, D.City, D.Area, D.Address
From PersonalDetails P
Left Join CommunicationDetails D On P.ID = D.PersonalDetailsID
Создан 23 фев.
У меня была такая же ошибка в запросе отчета. У меня были столбцы из разных таблиц с одинаковым именем и префиксом для каждой таблицы (например: выберите a.description, b.description, c.description), которые нормально работают в Oracle, но для отчета у вас должен быть уникальный псевдоним для каждой столбец, поэтому просто добавьте псевдоним к полям с тем же именем (выберите a.description a_description, b.description b_description и т. д.)
ответ дан 09 авг.
Извините, это ответ на старую тему, но все еще может быть полезен.
В дополнение к приведенным выше ответам это обычно происходит, когда в один и тот же запрос включены два столбца с одинаковым именем, даже из разных таблиц. например, если мы объединяем две таблицы city и state, где таблицы имеют имя столбца, например, city.name и state.name. когда такой запрос добавляется в набор данных, SSRS удаляет имя таблицы или псевдоним таблицы и сохраняет только имя, которое в конечном итоге дважды появляется в запросе и ошибках как повторяющийся ключ. Лучший способ избежать этого — использовать псевдоним, например, называя имена столбцов city.name как c_name state.name как s_name. Это решит проблему.
Создан 23 фев.
Я получил это сообщение об ошибке с предприятием vs2015, ssdt 14.1.xxx, ssrs. Для меня я думаю, что это было что-то другое, чем описано выше с проблемой 2 столбцов с тем же именем. Я добавил этот отчет, затем удалил отчет, затем, когда я попытался добавить запрос обратно в мастер ssrs, я получил это сообщение: «Произошла ошибка при сохранении метода разработки запроса: недопустимое имя объекта: имя таблицы». где имя_таблицы — это таблица запроса, который читал мастер. Я попытался очистить проект, я попытался перестроить проект. На мой взгляд, Microsoft не завершает очистку отчета, когда вы его удаляете, и пока вы пытаетесь добавить исходный запрос обратно, он не добавит. Способ, которым я смог исправить это, заключался в том, чтобы создать отчет ssrs в совершенно новом проекте (очевидно, ничего плохого в запросе) и сохранить его в стороне. Затем я снова открыл свой исходный проект ssrs, щелкнул правой кнопкой мыши «Отчеты», затем «Добавить», затем добавил «Существующий элемент». Отчет добавился обратно просто отлично, без конфликта имен.
Создан 28 июля ’21, 17:07
Я только что получил эту ошибку, и я узнал, что речь идет о псевдониме локальной переменной
в конце хранимой процедуры мне понравилось
select @localvariable1,@localvariable2
он отлично работал в sql, но когда я запускал это в ssrs, он всегда выдавал ошибку, но после того, как я дал псевдоним, он исправлен
select @localvariable1 as A,@localvariable2 as B
Создан 06 июн.
SSRS не будет принимать повторяющиеся столбцы, поэтому убедитесь, что ваш запрос или процедура хранения возвращают уникальные имена столбцов.
Создан 19 июля ’20, 10:07
Если вы используете SP и если SP имеют несколько операторов Select (в условиях if), все эти выборки должны обрабатываться с уникальными именами полей.
Создан 17 июля ’20, 11:07
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками
ssrs-2008
reporting-services
or задайте свой вопрос.