Сильные имена базы данных на сервере базы данных

Я получил эту проблему после обновления проекта от netcoreapp2.0 до netcoreapp2.2.

я сделал это только путем редактирования TargetFramework запись в .csproj файл и забыл также вносить изменение launch.json.

"program": "${workspaceFolder}/src/MyProject/bin/Debug/netcoreapp2.0/MyProject.dll"

Это означало, что VS Code всегда загружал старые 2,0 версии проекта. Я только обнаружил его после удаления всего в /bin и /obj, и затем это не будет работать вообще, пока я не определил 2.0 в пути выше.

5
задан Pascal Thivent 11 September 2009 в 22:24
поделиться

7 ответов

Наша стратегия именования обычно основана на объединении трех букв акронимы ( TLA ), представляющие различные «измерения» базы данных, разделенные подчеркиванием. Это правило применяется к сайтам, приложениям, клиентам и т. Д.

Например, если в моем приложении используется аббревиатура ABC , а наш офис в Объединенных Эмиратах является подписчиком базы данных ABC, это имя базы данных будет тогда be ABC_UAE (Использование официального / ISO TLA страны, конечно, хороший выбор).

После того, как вы дадите своим клиентам идентификатор TLA, вы можете использовать его для создания имени вашей базы данных:

  • ABC_ACM : для основной / центральной базы данных ABC для компании Acme
  • ABC_ACM_CAN : для своих подписчиков в Канаде

Теперь, если вы поддерживаете разные версии базы данных, у вас есть выбор между:

  • ABC_012_ACM , если версия 1.2 поддерживается для нескольких клиентов

  • ABC_ACM_012 , если у Acme есть свои специфические 1.2 версия

В случае, если у этих баз данных есть подписчики, значение ABC_ACM_012_CAN тогда совершенно очевидно. Я бы посоветовал вам использовать стандартную трехзначную нумерацию для номеров версий. Это действительно упрощает жизнь!

Это правило имеет некоторые исключения, когда речь идет о базах данных для разработки. Например, моя версия базы данных ABC_ACM для разработчика будет иметь вид ABC_ACM_pgrondier , если разработка ведется клиентом, или ABC_012_pgrondier , если разработка поддерживается версией. Собственно говоря, имея последний измерение 'имени базы данных, не реализующее правило TLA, также довольно распространено, когда вы обращаетесь к отдельным подписчикам:

  • ABC_ACM_012_username является подписчиком на ABC_ACM_012

  • ABC_ACM_012_CAN_username 1142CAN256 для подписчика на

6
ответ дан 18 December 2019 в 07:10
поделиться

Создание Developmestuction , где вы иметь несколько экземпляров одной и той же базы данных (Dev, Production) на одном сервере базы данных просто вызывает проблемы. Если вы не можете получить второй сервер (физический или виртуальный), вам следует подумать о создании отдельных экземпляров SQL Server.

Имя вашей базы данных должно отражать ваше внутреннее обращение к приложениям. Вы писали:

У нас есть клиенты с несколькими версиями одного и того же приложения и несколькими приложениями для одного клиента

Непонятно, о чем вы. Возьмите одну из своих "базовых" приложения, а затем настроить приложение для разных клиентов? Вы создаете совершенно разные приложения для разных клиентов? Это смесь того и другого?

Я предполагаю, что вы начинаете с разработки одноразового приложения и, если оно нравится другому клиенту, используете его в качестве базового приложения для будущих клиентов. Исходя из этого, было бы разумно ссылаться на ваши приложения по имени + клиенту и соответствующим образом называть свои базы данных.

  • SalesManager_Wilco
  • SalesManager_AbcInc
  • SalesManager_Internal
  • TimesheetKeeper_Internal
  • ExpenseTracker_Wilco
  • HelpBuilder_Wilco
  • HelpB ]
8
ответ дан 18 December 2019 в 07:10
поделиться

Мне нравится включать имя сайта в мои схемы именования баз данных, когда это возможно:

client_sitename_app_version

Если у одного клиента есть несколько приложений, работающих с одной и той же версией на одном сайте, каждому из них нужна собственная база данных .. Это кажется немного странным. В зависимости от варианта использования вам понадобится еще один отличительный фактор. Добавьте номер экземпляра или ссылку на использование в самом конце.

3
ответ дан 18 December 2019 в 07:10
поделиться

Мы используем {product} {version} {Development | Test} _ [необязательное описание функции, владелец, дата]

Его длинный, но означает, что каждую базу данных можно отслеживать, и у каждой базы данных есть идентификатор владельца. Итак, основная база данных продукта для версии 4.2 - это, скажем, Product42Development ... и с ней связана база данных однорангового тестирования Product42Test .

База данных однорангового тестирования отделена от основная тестовая база данных (которая находится на другом сервере и используется исключительно командой тестирования): это то место, где разработчики вносят свои исправления, прежде чем вносить их в основное дерево, проверяя ее другими разработчиками (следовательно, равноправный тест), но сохраняя ее вне активной разработки (которая постоянно меняется и нестабильна).

Если существует ветвь базы данных, необходимая из-за того, что кто-то занимается очень разрушительной разработкой, она должна включать имя функции, владельца функции и дату создания. Что-то вроде: Product42Development_NewFeatureName_OwnerName_20090812 ... это гарантирует, что администраторы баз данных не только смогут отслеживать, какие базы данных существуют, но (что более важно) так же могут и все другие разработчики, чтобы они не возились с базой данных без частично информированы о том, для чего существует БД.

2
ответ дан 18 December 2019 в 07:10
поделиться

Мы используем изоляцию контейнера для запуска различных экземпляров / кратных версий баз данных (postgres и mysql), но проблема схемы именования остается той же. Мы следуем следующему:

Имя клиента + идентификатор продукта + тип задачи (продукт, постановка, тест, учет и т. Д.)

например: nuxil_erp_test, nuxil_erp_prod, nuxil_erp_accountingTraining.

Однако мы, вероятно, позволим отказаться от этой схемы именования, потому что у клиентов есть возможность создавать новые базы данных, и у всех есть свои собственные идеи по именованию баз данных.

1
ответ дан 18 December 2019 в 07:10
поделиться

Echoing the prior posts and tossing in some comments:

Definitely, Company/Client and Application. Which goes first depends on which is more important--not to the client, but to the people supporting the software.

I totally agree that only Production systems should be on a Production server. Development, Testing, QA, Staging, EAP, whatever, they're all best served by being on their own box, SQL instance, or VMWare instance. ("Developmestuction". Love it.)

I question adding version to the database name. Can a database of version X be updated to version X+1 or X.1? If so, do you have to dig out and rename all your connection strings and other bits referencing database names? Versioning data is information I would (and do) store within each database. If an upgrade means migrating the data in an old database to a newly constructed one, I guess you could put the version in the name. And if you have to actively support multiple versions of a given database "type", AND it's useful for the people supporting the system to have that information clearly stated in the database name, then go for it (though again, beware updating/renaming issues).

2
ответ дан 18 December 2019 в 07:10
поделиться

В одной из крупных компаний, с которыми я работал в прошлом году, внедряя набор инструментов, проданный моим работодателем, мы следовали их региональным соглашениям об именах :

US

  • {p | d} , где p для производства, а d для разработки

UK + HK

  • {p | d}

Это работает для них. Лично я также называю свои экземпляры базы данных по имени приложения и использованию.

0
ответ дан 18 December 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: