Во-первых, сгенерируйте действительный оператор T-SQL. У вас есть ошибки при использовании CREATE LOGIN и sp_executesql .
ownerpass = "abcdef"
owner = "yrdy"
sql_login = (
"DECLARE @sql AS NVARCHAR(MAX);"
"DECLARE @Databaseowner sysname = ?;"
"DECLARE @Databaseownerpass sysname = ?;"
"SET @sql =
N'if not exists (select * from sys.sql_logins where name = @Databaseowner )' +
N' CREATE LOGIN ' + QUOTENAME(@Databaseowner) +
N' WITH PASSWORD = ' + QUOTENAME(@Databaseownerpass, '''') + N';';"
"EXEC sp_executesql @sql, N'@Databaseowner sysname, @Databaseownerpass sysname', @Databaseowner, @Databaseownerpass;"
)
Затем, если вы используете ?
в качестве заполнителя, выполните ваш скрипт следующим образом:
cursor.execute(sql_login, (owner, ownerpass))
Я не абсолютно уверен, на что Ваш repo похож, но здесь является худшим вариантом.
Предположим Ваш origin
репозиторий похож на это
origin: o---o---A---B---C master
И Ваш локальный репозиторий похож на это,
JimPuls: o---o---A---B---C master, origin/master \ D---E---F topic1
Затем после того, как Ваше ответвление переименовывает Ваш локальный репозиторий, похож на это:
JimPuls: o---o---A---B---C old_master, origin/master \ D---E---F master
Теперь, когда Вы продвигаете master
кому: origin
это будет обновлением неускоренной перемотки вперед. После нажатия, origin
репозиторий будет похож на это:
origin: o---o---A...B...C (B & C are orphaned commits) \ D---E---F master
Это может быть жестоко Вашим друзьям, которые, возможно, сделали фиксации сверху C
. Например, если Sally работала с Вами, ее репозиторий может быть похожим на это:
Sally: o---o---A---B---C origin/master \ G---H---I master
Теперь, если Вы делаете Ваше нажатие неускоренной перемотки вперед и Sally делают a fetch
ее репозиторий будет похож на это:
Sally: D---E---F origin/master / o---o---A---B---C \ G---H---I master
Теперь Sally должна выяснить, как получить ее работу (G, H, I) назад в репозиторий. Если она просто делает слияние с origin/master
затем изменения в B и C вернутся в репозитории (ой!). Вместо этого она будет иметь к cherry-pick
или rebase
ее ТОПЛЕНОЕ МАСЛО изменяется на origin/master
.
Здорово, что Мерзавец позволяет Вам сделать это, но это - вид поиска неприятностей. Вы действительно надеетесь, что Sally замечает ситуацию. Поэтому необходимо предупредить всех других участников, когда Вы делаете это так, они могут иметь дело с изменением соответственно.
Примечание: вышеупомянутое является худшим вариантом. Если Ваш topic1
от ответвления отступают master
в C затем, что изменение является ускоренной перемоткой вперед и нет никаких проблем.
В основном Ваши операции совпадают с:
# git checkout master
# git reset --hard topic1
# git push origin master
И они будут иметь точно что эффект: Все другие доберутся topic1
ответвление (это называют master
для них, хотя) и его родословная до такой степени, когда master
и topic1
сначала отличенный. Старое master
ответвление затем лежит вокруг в их репозиториях и будет собрано "мусор" в какой-то момент в будущем, потому что ничто больше не указывает на него.
Если topic1
ответвление, которое произошло из тока HEAD
из master
Вы будете в порядке здесь. Иначе Вы войдете в “ситуацию с” истории перезаписи, которая может сделать путаницу Ваш, например, Ваши теги. Необходимо думать тщательно о том, чего Вы действительно пытаетесь достигнуть. Возможно, простое git merge
будет служить Вам лучше?