Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Кроме того, удостоверьтесь, когда Вы пишете запрос, включающий связанный сервер, Вы включаете скобки как это:
SELECT * FROM [LinkedServer].[RemoteDatabase].[User].[Table]
я нашел, что, по крайней мере, на 2000/2005 [] скобки необходимы, по крайней мере, вокруг имени сервера.
Обновление: для соединения с другим SQL-сервером и выполнения sql операторы, необходимо использовать sqlcmd Утилита . Это обычно делается в пакетном файле. Можно объединить это с xmp_cmdshell, если Вы хотите выполнить его в студии управления.
<час>один путь состоит в том, чтобы настроить связанный сервер . тогда можно добавить связанный сервер и имя базы данных к имени таблицы. (выберите * из linkedserver.database.dbo. TableName)
USE master
GO
EXEC sp_addlinkedserver
'SEATTLESales',
N'SQL Server'
GO
Если я должен был перефразировать вопрос - он возможный выбрать контекст сервера для выполнения запросов в DDL - ответ нет. Только контекст базы данных может быть программно выбран с ИСПОЛЬЗОВАНИЕМ. (уже предварительно выбрав контекст сервера внешне)
Связанный сервер и ОТКРЫВАЕТ, QUERY может предоставить доступ к DDL, но потребовать несколько, чтобы перезапись Вашего кода инкапсулировала как строка - мешающий разрабатывать/отлаживать.
Поочередно Вы могли обратиться к внешней программе драйвера в файлы SQL погрузки для отправки к удаленному серверу через, ОТКРЫВАЮТ QUERY. Однако в большинстве случаев Вы, возможно, также соединились с сервером непосредственно в 1-м месте для оценки DDL.
Попытайтесь создать связанный сервер (который можно сделать с sp_addlinkedserver), и затем использование OPENQUERY
Если возможно, проверьте SSIS (службы интеграции SQL Server). Я только начинаю работать с этим набором инструментов, но уже перебираю более 40 серверов и готовлюсь к разного рода разрушениям;)
В SQL Server Management Studio включите режим SQLCMD в меню Query. Затем в верхней части вашего скрипта введите команду, приведенную ниже
:Connect server_name[\instance_name] [-l timeout] [-U user_name [-P password]
Если вы подключаетесь к нескольким серверам, обязательно вставляйте GO
между подключениями; иначе ваш T-SQL не будет выполняться на том сервере, на котором вы предполагаете.