Создайте базовый уровень Azure SQL Database Basic (например, он стоит 5 долларов в месяц, вы также можете создать бесплатный, доступный на год) со всеми объектами, необходимыми в базе данных, которые вы можете копировать асинхронно с помощью следующего оператора ниже или используя PowerShell.
CREATE DATABASE db_copy
AS COPY OF ozabzw7545.db_original ( SERVICE_OBJECTIVE = 'P2' );
После этого вы можете отслеживать, когда копирование заканчивается с помощью следующей инструкции:
Select
[sys].[databases].[name],
[sys].[databases].[state_desc],
[sys].[dm_database_copies].[start_date],
[sys].[dm_database_copies].[modify_date],
[sys].[dm_database_copies].[percent_complete],
[sys].[dm_database_copies].[error_code],
[sys].[dm_database_copies].[error_desc],
[sys].[dm_database_copies].[error_severity],
[sys].[dm_database_copies].[error_state]
From
[sys].[databases]
Left
Outer
Join
[sys].[dm_database_copies]
On
[sys].[databases].[database_id] = [sys].[dm_database_copies].[database_id]
Where
[sys].[databases].[name] = 'db_copy'
Существует сводка этой проблемы на форумах Sun..., кажется, довольно распространенная проблема, не ограниченная OS X.
Последнее сообщение в потоке суммирует предлагаемое решение. В сущности используйте форму Runtime.exec
это берет a String[]
массив:
String[] args = new String[] { "open", "\"/folder name/toast.sh\"" };
или (форум предлагает, это будет работать также),
String[] args = new String[] { "open", "folder name/toast.sh" };
Попробуйте это:
Runtime.getRuntime().exec("open /folder\\ name/toast.sh");
"\" просто поместит пространство в строку, но "\" поместит "\" в строку, которая будет передана оболочке, и оболочка выйдет из пространства.
Если это не работает, передача в аргументах как массив, один элемент для каждого аргумента. Тем путем оболочка не принимает участие, и Вам не нужны причудливые Escape.
Runtime.getRuntime().exec(new String[]{"open", "/folder name/toast.sh"});
Параметр Пола работает, но вы все равно должны избегать пробелов, например так:
Runtime.getRuntime().exec(new String[]{"open", "/folder\\ name/toast.sh"});
Отстойное использование массива String состоит в том, что каждый параметр и его параметр должны быть в своем собственном элементе. Например, вы не можете сделать это:
Runtime.getRuntime().exec(new String[]{"executable", "-r -x 1", "/folder\\ name/somefile"});
Но вместо этого вы должны указать это так:
Runtime.getRuntime().exec(new String[]{"executable", "-r", "-x", "1", "/folder\\ name/somefile"});